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;
};
export function buildSenseGenerator(deps: BuildSenseGeneratorDeps): WorkflowDefinition<SenseMeta> {
export function buildSenseGenerator({
provider,
nerveRoot,
sensesDir,
senseExamples,
nerveYaml,
}: BuildSenseGeneratorDeps): WorkflowDefinition<SenseMeta> {
return {
name: "sense-generator",
roles: {
planner: buildPlannerRole({
provider: deps.provider,
cwd: deps.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,
}),
planner: buildPlannerRole({ provider, cwd: nerveRoot, senseExamples, nerveYaml }),
coder: buildCoderRole({ provider, cwd: nerveRoot, sensesDir, nerveRoot }),
tester: buildTesterRole({ provider, sensesDir, nerveRoot }),
},
moderator,
};

View File

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

View File

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

View File

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