feat: support codex and claude reviewers

This commit is contained in:
2026-07-22 02:47:34 +08:00
parent b5618e1b0c
commit d38151ad78
13 changed files with 400 additions and 102 deletions
+57
View File
@@ -15,6 +15,63 @@ describe("workflow start arguments", () => {
vcs: undefined,
maxCycles: undefined,
newTask: true,
reviewer: undefined,
});
});
it("accepts a valid reviewer", () => {
expect(parseWorkflowArgs([
"start",
"--plan", "plan.json",
"--executor", "reasonix",
"--reviewer", "claude"
])).toEqual({
sub: "start",
planInput: "plan.json",
executor: "reasonix",
vcs: undefined,
maxCycles: undefined,
newTask: false,
reviewer: "claude",
});
});
it("throws on invalid reviewer", () => {
expect(() => parseWorkflowArgs([
"start",
"--plan", "plan.json",
"--executor", "reasonix",
"--reviewer", "invalid"
])).toThrow(/must be codex or claude/);
});
});
describe("workflow advancing arguments", () => {
it("review requires reviewer", () => {
expect(() => parseWorkflowArgs(["review", "--run", "run-123"])).toThrow(/--reviewer is required/);
expect(parseWorkflowArgs(["review", "--run", "run-123", "--reviewer", "codex"])).toEqual({
sub: "review",
runId: "run-123",
reviewer: "codex"
});
});
it("decide requires reviewer", () => {
expect(() => parseWorkflowArgs(["decide", "--run", "run-123", "--input", "decision.json"])).toThrow(/--reviewer is required/);
expect(parseWorkflowArgs(["decide", "--run", "run-123", "--input", "decision.json", "--reviewer", "claude"])).toEqual({
sub: "decide",
runId: "run-123",
decisionInput: "decision.json",
reviewer: "claude"
});
});
it("retry-review requires reviewer", () => {
expect(() => parseWorkflowArgs(["retry-review", "--run", "run-123"])).toThrow(/--reviewer is required/);
expect(parseWorkflowArgs(["retry-review", "--run", "run-123", "--reviewer", "codex"])).toEqual({
sub: "retry-review",
runId: "run-123",
reviewer: "codex"
});
});
});