refactor: unify RoleDefinition + WorkflowDefinition with description & schema

- Add RoleDefinition<Meta> = { description, run, schema } to core types
- WorkflowDefinition now carries description and RoleDefinition per role
- Add buildDescriptor() in core to derive WorkflowDescriptor from WorkflowDefinition
- Remove buildDescriptorFromRoles / RoleDescriptorInput from workflow-util-role
- Update solve-issue template, examples, and all tests

小橘 <xiaoju@shazhou.work>
This commit is contained in:
2026-05-06 11:19:49 +00:00
parent 79cf97e617
commit c7b0beb6be
23 changed files with 230 additions and 198 deletions
+14 -5
View File
@@ -1,9 +1,14 @@
import { createRoleModerator, END, type Role } from "@uncaged/workflow";
import { createRoleModerator, END, type RoleDefinition } from "@uncaged/workflow";
import * as z from "zod/v4";
type Roles = {
greeter: { greeting: string };
};
const greeterMetaSchema = z.object({
greeting: z.string(),
});
export const descriptor = {
description: "A simple hello world workflow",
roles: {
@@ -18,10 +23,14 @@ export const descriptor = {
},
};
const greeter: Role<Roles["greeter"]> = async (ctx) => ({
content: `Hello, ${ctx.start.content}`,
meta: { greeting: "Hello!" },
});
const greeter: RoleDefinition<Roles["greeter"]> = {
description: "Generates a greeting",
schema: greeterMetaSchema,
run: async (ctx) => ({
content: `Hello, ${ctx.start.content}`,
meta: { greeting: "Hello!" },
}),
};
export const run = createRoleModerator<Roles>({
roles: { greeter },
+2 -1
View File
@@ -3,6 +3,7 @@
"private": true,
"type": "module",
"dependencies": {
"@uncaged/workflow": "workspace:*"
"@uncaged/workflow": "workspace:*",
"zod": "^4.0.0"
}
}