test(FN-5102): add failing agent tracking flag repro

Fusion-Task-Id: FN-5102
Fusion-Task-Lineage: 13be2941-176e-4a6e-b6fc-2bb644f7444a
This commit is contained in:
Fusion (runfusion.ai)
2026-05-18 22:54:31 -07:00
committed by gsxdsm
parent 093ae0bac8
commit 780cf6b3d8

View File

@@ -0,0 +1,83 @@
import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { mkdtempSync } from "node:fs";
import { rm } from "node:fs/promises";
import { join } from "node:path";
import { tmpdir } from "node:os";
import { TaskStore, setTaskCreatedHook } from "@fusion/core";
import { createDelegateTaskTool, createTaskCreateTool } from "../agent-tools.js";
const githubTrackingHookModulePromise: Promise<any> = import("../../../dashboard/src/github-tracking-hook.js");
const githubTrackingModulePromise: Promise<any> = import("../../../dashboard/src/github-tracking.js");
function makeTmpDir(prefix: string): string {
return mkdtempSync(join(tmpdir(), prefix));
}
describe("agent task creation githubTracking.enabled persistence", () => {
let rootDir: string;
let globalDir: string;
let store: TaskStore;
beforeEach(async () => {
setTaskCreatedHook(undefined);
vi.restoreAllMocks();
rootDir = makeTmpDir("kb-engine-agent-task-create-gh-flag-");
globalDir = makeTmpDir("kb-engine-agent-task-create-gh-flag-global-");
store = new TaskStore(rootDir, globalDir, { inMemoryDb: true });
await store.init();
await store.updateSettings({
githubTrackingEnabledByDefault: true,
githubTrackingDefaultRepo: "owner/repo",
});
});
afterEach(async () => {
setTaskCreatedHook(undefined);
store.close();
await rm(rootDir, { recursive: true, force: true });
await rm(globalDir, { recursive: true, force: true });
});
it.each([
{
name: "fn_task_create",
run: async () => createTaskCreateTool(store, { sourceType: "api" }).execute(
"call-1",
{ description: "agent-created tracked task" } as never,
undefined,
undefined,
{} as never,
),
},
{
name: "fn_delegate_task",
run: async () => createDelegateTaskTool({
getAgent: vi.fn().mockResolvedValue({ id: "agent-1", name: "Worker", role: "executor", state: "idle" }),
} as never, store).execute(
"call-1",
{ agent_id: "agent-1", description: "delegated tracked task" } as never,
undefined,
undefined,
{} as never,
),
},
])("persists githubTracking.enabled and invokes tracking hook for $name", async ({ run }) => {
const githubTrackingHookModule = await githubTrackingHookModulePromise;
const githubTrackingModule = await githubTrackingModulePromise;
const maybeCreateSpy = vi.spyOn(githubTrackingModule, "maybeCreateTrackingIssue").mockResolvedValue({
created: false,
reason: "no_repo_configured",
});
githubTrackingHookModule.registerGithubTrackingHook();
const result = await run();
const taskId = (result as { details?: { taskId?: string } }).details?.taskId as string;
expect(maybeCreateSpy).toHaveBeenCalledTimes(1);
const persisted = await store.getTask(taskId);
expect(persisted?.githubTracking?.enabled).toBe(true);
});
});