feat(FN-4045): surface and handle delegate task collision errors
Added delegate collision detection and error surfacing across the task creation and delegation pipeline. The core store now throws a typed `DelegateCollisionError` when `createTask` encounters a duplicate task ID, the engine's `delegate_task` tool propagates these errors with context, and the CLI ex Fusion-Task-Id: FN-4045
This commit is contained in:
@@ -256,6 +256,22 @@ describe("createDelegateTaskTool", () => {
|
||||
expect(taskStore.createTask).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it("returns explicit collision error when delegated createTask hits existing id", async () => {
|
||||
const agent = createAgent({ id: "agent-001", name: "Bob" });
|
||||
vi.mocked(agentStore.getAgent).mockResolvedValue(agent);
|
||||
vi.mocked(taskStore.createTask).mockRejectedValue(new Error("Task ID already exists: FN-050"));
|
||||
|
||||
const tool = createDelegateTaskTool(agentStore, taskStore);
|
||||
const result = await tool.execute("session-1", {
|
||||
agent_id: "agent-001",
|
||||
description: "Write tests",
|
||||
}, undefined as any, undefined as any, undefined as any);
|
||||
|
||||
expect((result as { isError?: boolean }).isError).toBe(true);
|
||||
expect((result.content[0] as { text: string }).text).toBe("ERROR: Task ID already exists: FN-050");
|
||||
expect(result.details).toEqual({});
|
||||
});
|
||||
|
||||
it("allows durable engineer target without override", async () => {
|
||||
const engineer = createAgent({ id: "agent-009", name: "Eli", role: "engineer" });
|
||||
vi.mocked(agentStore.getAgent).mockResolvedValue(engineer);
|
||||
|
||||
Reference in New Issue
Block a user