refactor: use destructuring to simplify build functions

This commit is contained in:
小橘 2026-04-28 04:04:49 +00:00
parent cb61e98979
commit 69eb4ffe49
4 changed files with 21 additions and 32 deletions

View File

@ -14,27 +14,19 @@ export type BuildSenseGeneratorDeps = {
nerveYaml: string; nerveYaml: string;
}; };
export function buildSenseGenerator(deps: BuildSenseGeneratorDeps): WorkflowDefinition<SenseMeta> { export function buildSenseGenerator({
provider,
nerveRoot,
sensesDir,
senseExamples,
nerveYaml,
}: BuildSenseGeneratorDeps): WorkflowDefinition<SenseMeta> {
return { return {
name: "sense-generator", name: "sense-generator",
roles: { roles: {
planner: buildPlannerRole({ planner: buildPlannerRole({ provider, cwd: nerveRoot, senseExamples, nerveYaml }),
provider: deps.provider, coder: buildCoderRole({ provider, cwd: nerveRoot, sensesDir, nerveRoot }),
cwd: deps.nerveRoot, tester: buildTesterRole({ provider, sensesDir, nerveRoot }),
senseExamples: deps.senseExamples,
nerveYaml: deps.nerveYaml,
}),
coder: buildCoderRole({
provider: deps.provider,
cwd: deps.nerveRoot,
sensesDir: deps.sensesDir,
nerveRoot: deps.nerveRoot,
}),
tester: buildTesterRole({
provider: deps.provider,
sensesDir: deps.sensesDir,
nerveRoot: deps.nerveRoot,
}),
}, },
moderator, moderator,
}; };

View File

@ -11,12 +11,11 @@ export type BuildCoderDeps = {
nerveRoot: string; nerveRoot: string;
}; };
export function buildCoderRole(deps: BuildCoderDeps) { export function buildCoderRole({ provider, cwd, sensesDir, nerveRoot }: BuildCoderDeps) {
return createCursorRole<CoderMeta>({ return createCursorRole<CoderMeta>({
cwd: deps.cwd, cwd,
mode: "default", mode: "default",
prompt: async (threadId) => prompt: async (threadId) => coderPrompt({ threadId, sensesDir, nerveRoot }),
coderPrompt({ threadId, sensesDir: deps.sensesDir, nerveRoot: deps.nerveRoot }), extract: { provider, schema: coderMetaSchema },
extract: { provider: deps.provider, schema: coderMetaSchema },
}); });
} }

View File

@ -11,12 +11,11 @@ export type BuildPlannerDeps = {
nerveYaml: string; nerveYaml: string;
}; };
export function buildPlannerRole(deps: BuildPlannerDeps) { export function buildPlannerRole({ provider, cwd, senseExamples, nerveYaml }: BuildPlannerDeps) {
return createCursorRole<PlannerMeta>({ return createCursorRole<PlannerMeta>({
cwd: deps.cwd, cwd,
mode: "ask", mode: "ask",
prompt: async (threadId) => prompt: async (threadId) => plannerPrompt({ threadId, senseExamples, nerveYaml }),
plannerPrompt({ threadId, senseExamples: deps.senseExamples, nerveYaml: deps.nerveYaml }), extract: { provider, schema: plannerMetaSchema },
extract: { provider: deps.provider, schema: plannerMetaSchema },
}); });
} }

View File

@ -10,10 +10,9 @@ export type BuildTesterDeps = {
nerveRoot: string; nerveRoot: string;
}; };
export function buildTesterRole(deps: BuildTesterDeps) { export function buildTesterRole({ provider, sensesDir, nerveRoot }: BuildTesterDeps) {
return createHermesRole<TesterMeta>({ return createHermesRole<TesterMeta>({
prompt: async (threadId) => prompt: async (threadId) => testerPrompt({ threadId, sensesDir, nerveRoot }),
testerPrompt({ threadId, sensesDir: deps.sensesDir, nerveRoot: deps.nerveRoot }), extract: { provider, schema: testerMetaSchema },
extract: { provider: deps.provider, schema: testerMetaSchema },
}); });
} }