refactor(sense-generator): extract meta schemas to types.ts

小橘 🍊(NEKO Team)
This commit is contained in:
小橘 2026-04-28 02:38:07 +00:00
parent fd3a8c64f2
commit 516a28533a
3 changed files with 14 additions and 11 deletions

View File

@ -1,7 +1,6 @@
import { createCursorRole } from "@uncaged/nerve-workflow-utils"; import { createCursorRole } from "@uncaged/nerve-workflow-utils";
import { z } from "zod";
import { resolveDashScopeProvider, NERVE_ROOT, SENSES_DIR } from "../shared.js"; import { resolveDashScopeProvider, NERVE_ROOT, SENSES_DIR } from "../shared.js";
import { coderMetaSchema } from "../types.js";
import type { SenseMeta } from "../types.js"; import type { SenseMeta } from "../types.js";
export async function buildCoderRole() { export async function buildCoderRole() {
@ -25,9 +24,7 @@ Implement the sense. Create exactly:
Follow the patterns from existing senses. Create all files now.`, Follow the patterns from existing senses. Create all files now.`,
extract: { extract: {
provider, provider,
schema: z.object({ schema: coderMetaSchema,
filesCreated: z.boolean().describe("true if the sense files were created"),
}),
}, },
}); });
} }

View File

@ -1,8 +1,6 @@
import { createCursorRole } from "@uncaged/nerve-workflow-utils"; import { createCursorRole } from "@uncaged/nerve-workflow-utils";
import { readFileSync } from "node:fs";
import { join } from "node:path";
import { z } from "zod";
import { resolveDashScopeProvider, buildSenseExamples, getNerveYaml, NERVE_ROOT } from "../shared.js"; import { resolveDashScopeProvider, buildSenseExamples, getNerveYaml, NERVE_ROOT } from "../shared.js";
import { plannerMetaSchema } from "../types.js";
import type { SenseMeta } from "../types.js"; import type { SenseMeta } from "../types.js";
const senseExamples = buildSenseExamples(); const senseExamples = buildSenseExamples();
@ -40,9 +38,7 @@ ${nerveYaml}
Output ONLY the plan. Be precise and implementation-ready.`, Output ONLY the plan. Be precise and implementation-ready.`,
extract: { extract: {
provider, provider,
schema: z.object({ schema: plannerMetaSchema,
senseName: z.string().describe("kebab-case sense name from the plan"),
}),
}, },
}); });
} }

View File

@ -1,5 +1,15 @@
import { z } from "zod";
export type SenseMeta = { export type SenseMeta = {
planner: { senseName: string }; planner: { senseName: string };
coder: { filesCreated: boolean }; coder: { filesCreated: boolean };
tester: { passed: boolean; attempt: number }; tester: { passed: boolean; attempt: number };
}; };
export const plannerMetaSchema = z.object({
senseName: z.string().describe("kebab-case sense name from the plan"),
});
export const coderMetaSchema = z.object({
filesCreated: z.boolean().describe("true if the sense files were created"),
});