From f1720eea5ee533d23cdf44e99554b69f626d3c95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=8F=E6=A9=98?= Date: Tue, 28 Apr 2026 04:52:21 +0000 Subject: [PATCH] refactor: infer Meta types from zod schema instead of hand-writing --- workflows/sense-generator/roles/coder/index.ts | 2 +- workflows/sense-generator/roles/planner/index.ts | 2 +- workflows/sense-generator/roles/tester/index.ts | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/workflows/sense-generator/roles/coder/index.ts b/workflows/sense-generator/roles/coder/index.ts index a3e2291..6464fba 100644 --- a/workflows/sense-generator/roles/coder/index.ts +++ b/workflows/sense-generator/roles/coder/index.ts @@ -3,10 +3,10 @@ import { createCursorRole } from "@uncaged/nerve-workflow-utils"; import { coderPrompt } from "./prompt.js"; import { z } from "zod"; -export type CoderMeta = { filesCreated: boolean }; export const coderMetaSchema = z.object({ filesCreated: z.boolean().describe("true if the sense files were created"), }); +export type CoderMeta = z.infer; export type BuildCoderDeps = { provider: LlmProvider; diff --git a/workflows/sense-generator/roles/planner/index.ts b/workflows/sense-generator/roles/planner/index.ts index a59fbeb..e98396e 100644 --- a/workflows/sense-generator/roles/planner/index.ts +++ b/workflows/sense-generator/roles/planner/index.ts @@ -3,10 +3,10 @@ import { createCursorRole } from "@uncaged/nerve-workflow-utils"; import { plannerPrompt } from "./prompt.js"; import { z } from "zod"; -export type PlannerMeta = { senseName: string }; export const plannerMetaSchema = z.object({ senseName: z.string().describe("kebab-case sense name from the plan"), }); +export type PlannerMeta = z.infer; export type BuildPlannerDeps = { provider: LlmProvider; diff --git a/workflows/sense-generator/roles/tester/index.ts b/workflows/sense-generator/roles/tester/index.ts index b8f66be..0f54edb 100644 --- a/workflows/sense-generator/roles/tester/index.ts +++ b/workflows/sense-generator/roles/tester/index.ts @@ -3,10 +3,10 @@ import { createHermesRole } from "@uncaged/nerve-workflow-utils"; import { testerPrompt } from "./prompt.js"; import { z } from "zod"; -export type TesterMeta = { passed: boolean }; export const testerMetaSchema = z.object({ passed: z.boolean().describe("true if all e2e checks passed"), }); +export type TesterMeta = z.infer; export type BuildTesterDeps = { provider: LlmProvider;