小橘 1683e41b05 refactor: decouple adapters from workflow factories, roles export createXxxRole
- Rename build* → create* workflow factories
- Workflow factories accept adapters: Record<string, AgentFn>
- Each role file exports createXxxRole(adapter, ...) factory
- _shared/workspace-committer accepts adapter as first param
- All adapter imports moved to index.ts (injection point)
- solve-issue roles also updated

Closes #15
2026-04-29 12:35:07 +00:00

43 lines
1.4 KiB
TypeScript

import type { AgentFn, WorkflowDefinition } from "@uncaged/nerve-core";
import type { LlmExtractorConfig } from "@uncaged/nerve-workflow-utils";
import { moderator } from "./moderator.js";
import type { SenseMeta } from "./moderator.js";
import { createCoderRole } from "./roles/coder.js";
import { createWorkspaceCommitterRole } from "./roles/committer.js";
import { createPlannerRole } from "./roles/planner.js";
import { createReviewerRole } from "./roles/reviewer.js";
import { createTesterRole } from "./roles/tester.js";
export type CreateDevelopSenseDeps = {
adapters: Record<string, AgentFn>;
extract: LlmExtractorConfig;
cwd: string;
};
export function createDevelopSenseWorkflow({
adapters,
extract,
cwd,
}: CreateDevelopSenseDeps): WorkflowDefinition<SenseMeta> {
const roles = {
planner: createPlannerRole(adapters.planner, extract),
coder: createCoderRole(adapters.coder, extract),
reviewer: createReviewerRole(adapters.reviewer, extract, cwd),
tester: createTesterRole(adapters.tester, extract, cwd),
committer: createWorkspaceCommitterRole(adapters.committer, {
extract,
nerveRoot: cwd,
workflowName: "develop-sense",
conventionalCommitScopeHint: "sense",
branchCheckoutExample: "git checkout -b fix/sense-export-path",
}),
};
return {
name: "develop-sense",
roles,
moderator,
};
}