function generateConstructionTasks(variants, agents) {
    const materialLevels = 5;
    const roomCounts = [4, 6, 8];
    const windowStyles = [0, 1, 2];
    const carpetStyles = [0, 1, 2];
    const timeout = 600; // 10 min base

    const tasks = {};

    for (let m = 0; m < materialLevels; m++) {
        for (let r = 0; r < roomCounts.length; r++) {
            for (let w = 0; w < windowStyles.length; w++) {
                for (let c = 0; c < carpetStyles.length; c++) {
                        for (let variant = 0; variant < variants; variant++) {

                            const rooms = roomCounts[r];
                            const spaceSize = calculateSpaceNeeded(rooms);

                            const blueprint = proceduralGeneration(
                                spaceSize,
                                spaceSize,
                                spaceSize,
                                rooms,
                                5,
                                5,
                                4,
                                5,
                                "air",
                                carpetStyles[c],
                                windowStyles[w],
                                m + 1
                            );

                            const taskName = `materials_${m}_rooms_${r}_window_${w}_carpet_${c}_variant_${variant}`;

                            tasks[taskName] = {
                                type: "construction",
                                goal: "Make a house with the blueprint",
                                conversation: "Let's share materials and make a house with the blueprint",
                                agent_count: agents,
                                initial_inventory: createInitialInventory(blueprint, agents),
                                timeout: timeout + (300 * r), // 5 minute per additional level of complexity
                                blueprint: blueprint,

                            };
                        }

                }
            }
        }
    }

    return tasks;
}
MAIN GENERATION FUNCTION

Varies agents, materials, room count, windows and carpets to create different complexities of construction tasks.
@param variants is the number of variants within each complexity level you want.
@returns The tasks as nested JSON {{}}