refactor: decouple adapters from workflow factories + createXxxRole #16
@ -9,21 +9,20 @@ import { createPlannerRole } from "./roles/planner.js";
|
||||
import { createReviewerRole } from "./roles/reviewer.js";
|
||||
import { createTesterRole } from "./roles/tester.js";
|
||||
|
||||
type DevelopSenseRole = 'planner' | 'coder' | 'reviewer' | 'tester' | 'committer';
|
||||
|
||||
export type CreateDevelopSenseDeps = {
|
||||
defaultAdapter: AgentFn;
|
||||
adapters?: Partial<Record<DevelopSenseRole, AgentFn>>;
|
||||
adapters?: Partial<Record<keyof SenseMeta, AgentFn>>;
|
||||
extract: LlmExtractorConfig;
|
||||
cwd: string;
|
||||
};
|
||||
|
||||
export function createDevelopSenseWorkflow({
|
||||
defaultAdapter,
|
||||
adapters,
|
||||
extract,
|
||||
cwd,
|
||||
}: CreateDevelopSenseDeps): WorkflowDefinition<SenseMeta> {
|
||||
const a = (role: DevelopSenseRole) => adapters?.[role] ?? defaultAdapter;
|
||||
const a = (role: keyof SenseMeta) => adapters?.[role] ?? defaultAdapter;
|
||||
const roles = {
|
||||
planner: createPlannerRole(a('planner'), extract),
|
||||
coder: createCoderRole(a('coder'), extract),
|
||||
|
||||
@ -9,21 +9,20 @@ import { createPlannerRole } from "./roles/planner.js";
|
||||
import { createReviewerRole } from "./roles/reviewer.js";
|
||||
import { createTesterRole } from "./roles/tester.js";
|
||||
|
||||
type DevelopWorkflowRole = 'planner' | 'coder' | 'reviewer' | 'tester' | 'committer';
|
||||
|
||||
export type CreateDevelopWorkflowDeps = {
|
||||
defaultAdapter: AgentFn;
|
||||
adapters?: Partial<Record<DevelopWorkflowRole, AgentFn>>;
|
||||
adapters?: Partial<Record<keyof WorkflowMeta, AgentFn>>;
|
||||
extract: LlmExtractorConfig;
|
||||
nerveRoot: string;
|
||||
};
|
||||
|
||||
export function createDevelopWorkflowWorkflow({
|
||||
defaultAdapter,
|
||||
adapters,
|
||||
extract,
|
||||
nerveRoot,
|
||||
}: CreateDevelopWorkflowDeps): WorkflowDefinition<WorkflowMeta> {
|
||||
const a = (role: DevelopWorkflowRole) => adapters?.[role] ?? defaultAdapter;
|
||||
const a = (role: keyof WorkflowMeta) => adapters?.[role] ?? defaultAdapter;
|
||||
const roles = {
|
||||
planner: createPlannerRole(a('planner'), extract),
|
||||
coder: createCoderRole(a('coder'), extract),
|
||||
|
||||
@ -12,21 +12,20 @@ import { createReadIssueRole } from "./roles/read-issue/index.js";
|
||||
import { createReviewRole } from "./roles/review/index.js";
|
||||
import { createTestRole } from "./roles/test/index.js";
|
||||
|
||||
type SolveIssueRole = 'read-issue' | 'prepare' | 'plan' | 'implement' | 'committer' | 'review' | 'test' | 'publish';
|
||||
|
||||
export type CreateSolveIssueDeps = {
|
||||
defaultAdapter: AgentFn;
|
||||
adapters?: Partial<Record<SolveIssueRole, AgentFn>>;
|
||||
adapters?: Partial<Record<keyof WorkflowMeta, AgentFn>>;
|
||||
nerveRoot: string;
|
||||
extract: LlmExtractorConfig;
|
||||
};
|
||||
|
||||
export function createSolveIssueWorkflow({
|
||||
defaultAdapter,
|
||||
adapters,
|
||||
nerveRoot,
|
||||
extract,
|
||||
}: CreateSolveIssueDeps): WorkflowDefinition<WorkflowMeta> {
|
||||
const a = (role: SolveIssueRole) => adapters?.[role] ?? defaultAdapter;
|
||||
const a = (role: keyof WorkflowMeta) => adapters?.[role] ?? defaultAdapter;
|
||||
return {
|
||||
name: "solve-issue",
|
||||
roles: {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user