import { Workflow, Sequence, Task, HumanTask, createSmithers } from "smithers-orchestrator";
import { z } from "zod";
const { smithers, outputs } = createSmithers({
review: z.object({
approved: z.boolean(),
comments: z.string(),
severity: z.enum(["low", "medium", "high"]),
}),
summary: z.object({ status: z.string() }),
});
export default smithers((ctx) => {
const review = ctx.outputMaybe(outputs.review, { nodeId: "human-review" });
return (
<Workflow name="review-flow">
<Sequence>
<HumanTask
id="human-review"
output={outputs.review}
prompt="Review the PR. Provide approved (boolean), comments (string), severity (low|medium|high)."
maxAttempts={5}
timeoutMs={86_400_000}
/>
{review ? (
<Task id="record" output={outputs.summary}>
{{ status: review.approved ? "approved" : "changes-requested" }}
</Task>
) : null}
</Sequence>
</Workflow>
);
});