feat: add four-phase role description (identity/prepare/execute/report)
- Extend RoleDefinition with identity, prepare, execute, report fields - Make systemPrompt optional (nullable) for four-phase workflows - Update ROLE_DEFINITION JSON Schema (all new fields optional) - Update validate.ts to accept new fields - Update workflow.ts to strip null fields before CAS storage - Update thread read to prefer identity over systemPrompt - Add --version flag to uwf CLI - Bump all packages to 0.5.0 Refs #359
This commit is contained in:
@@ -67,11 +67,22 @@ async function materializeWorkflowPayload(
|
||||
`${raw.name}.${roleName}`,
|
||||
role.outputSchema,
|
||||
);
|
||||
roles[roleName] = {
|
||||
const roleDef: RoleDefinition = {
|
||||
description: role.description,
|
||||
systemPrompt: role.systemPrompt,
|
||||
systemPrompt: role.systemPrompt ?? null,
|
||||
identity: role.identity ?? null,
|
||||
prepare: role.prepare ?? null,
|
||||
execute: role.execute ?? null,
|
||||
report: role.report ?? null,
|
||||
outputSchema,
|
||||
};
|
||||
// Strip null fields so CAS payload stays lean and schema-valid
|
||||
for (const key of ["systemPrompt", "identity", "prepare", "execute", "report"] as const) {
|
||||
if (roleDef[key] === null) {
|
||||
delete (roleDef as Record<string, unknown>)[key];
|
||||
}
|
||||
}
|
||||
roles[roleName] = roleDef;
|
||||
}
|
||||
return {
|
||||
name: raw.name,
|
||||
|
||||
Reference in New Issue
Block a user