feat: introduce conditional steps and branching logic to the experiment wizard and designer, along with new core and WoZ plugins.

This commit is contained in:
2026-02-10 10:24:09 -05:00
parent 388897c70e
commit 0f535f6887
38 changed files with 2410 additions and 1190 deletions

View File

@@ -1543,7 +1543,8 @@ export const experimentsRouter = createTRPCRouter({
description: step.description,
order: step.orderIndex,
duration: step.durationEstimate,
parameters: step.conditions as Record<string, unknown>,
parameters: {} as Record<string, unknown>, // No standard parameters on Step, only Conditions
conditions: step.conditions as Record<string, unknown>, // Correctly map conditions
parentId: undefined, // Not supported in current schema
children: [], // TODO: implement hierarchical steps if needed
actions: step.actions.map((action) => ({

View File

@@ -1046,6 +1046,19 @@ export const trialsRouter = createTRPCRouter({
createdBy: ctx.session.user.id,
});
// Update execution variables if data provided
if (input.data) {
const executionEngine = getExecutionEngine();
Object.entries(input.data).forEach(([key, value]) => {
executionEngine.setVariable(input.trialId, key, value);
});
// Also set a generic "last_wizard_response" if response field exists
if ('response' in input.data) {
executionEngine.setVariable(input.trialId, "last_wizard_response", input.data.response);
}
}
return { success: true };
}),