Hermes agent cwd is not necessarily the nerve workspace root. Inject nerveRoot into tester prompts so all file paths and commands use absolute paths to the workspace directory.
31 lines
1.0 KiB
TypeScript
31 lines
1.0 KiB
TypeScript
import { join } from "node:path";
|
|
import type { WorkflowDefinition } from "@uncaged/nerve-core";
|
|
import type { LlmProvider } from "@uncaged/nerve-workflow-utils";
|
|
import { buildPlannerRole } from "./roles/planner/index.js";
|
|
import { buildCoderRole } from "./roles/coder/index.js";
|
|
import { buildTesterRole } from "./roles/tester/index.js";
|
|
import { buildCommitterRole } from "./roles/committer/index.js";
|
|
import { moderator } from "./moderator.js";
|
|
import type { WorkflowMeta } from "./moderator.js";
|
|
|
|
export type BuildWorkflowGeneratorDeps = {
|
|
provider: LlmProvider;
|
|
nerveRoot: string;
|
|
};
|
|
|
|
export function buildWorkflowGenerator({
|
|
provider,
|
|
nerveRoot,
|
|
}: BuildWorkflowGeneratorDeps): WorkflowDefinition<WorkflowMeta> {
|
|
return {
|
|
name: "workflow-generator",
|
|
roles: {
|
|
planner: buildPlannerRole({ provider, cwd: nerveRoot }),
|
|
coder: buildCoderRole({ provider, cwd: nerveRoot }),
|
|
tester: buildTesterRole({ provider, nerveRoot }),
|
|
committer: buildCommitterRole({ nerveRoot }),
|
|
},
|
|
moderator,
|
|
};
|
|
}
|