diff --git a/workflows/sense-generator/index.ts b/workflows/sense-generator/index.ts index 13b5642..18926dc 100644 --- a/workflows/sense-generator/index.ts +++ b/workflows/sense-generator/index.ts @@ -6,6 +6,10 @@ import { buildTesterRole } from "./roles/tester/index.js"; import type { SenseMeta } from "./roles/types.js"; +function countRole(steps: { role: string }[], name: string): number { + return steps.filter((s) => s.role === name).length; +} + const workflow: WorkflowDefinition = { name: "sense-generator", roles: { @@ -20,7 +24,7 @@ const workflow: WorkflowDefinition = { if (last.role === "coder") return "tester"; if (last.role === "tester") { if (last.meta.passed) return END; - return last.meta.attempt < 3 ? "coder" : END; + return countRole(context.steps, "tester") < 3 ? "coder" : END; } return END; }, diff --git a/workflows/sense-generator/roles/types.ts b/workflows/sense-generator/roles/types.ts index 401c1fb..bc52875 100644 --- a/workflows/sense-generator/roles/types.ts +++ b/workflows/sense-generator/roles/types.ts @@ -3,7 +3,7 @@ import { z } from "zod"; export type SenseMeta = { planner: { senseName: string }; coder: { filesCreated: boolean }; - tester: { passed: boolean; attempt: number }; + tester: { passed: boolean }; }; export const plannerMetaSchema = z.object({ @@ -16,5 +16,4 @@ export const coderMetaSchema = z.object({ export const testerMetaSchema = z.object({ passed: z.boolean().describe("true if all e2e checks passed"), - attempt: z.number().describe("which attempt this is (1-based)"), });