- Split 500-line monolith into roles/{planner,coder,tester,committer}/
- Each role: index.ts (build function) + prompt.ts (pure function)
- Use createCursorRole/createLlmRole/createHermesRole factories
- DIP: env vars read in index.ts, injected via build.ts
- esbuild bundle to dist/index.js (24kb)
- Moderator logic preserved: planner→coder→tester→committer with retries
Fixes xiaoju/nerve-workspace#3
21 lines
577 B
TypeScript
21 lines
577 B
TypeScript
import { join } from "node:path";
|
|
import { buildWorkflowGenerator } from "./build.js";
|
|
|
|
const HOME = process.env.HOME ?? "/home/azureuser";
|
|
const NERVE_ROOT = join(HOME, ".uncaged-nerve");
|
|
|
|
const apiKey = process.env.DASHSCOPE_API_KEY;
|
|
const baseUrl = process.env.DASHSCOPE_BASE_URL;
|
|
const model = process.env.DASHSCOPE_MODEL ?? "qwen-plus";
|
|
|
|
if (!apiKey || !baseUrl) {
|
|
throw new Error("Set DASHSCOPE_API_KEY and DASHSCOPE_BASE_URL");
|
|
}
|
|
|
|
const workflow = buildWorkflowGenerator({
|
|
provider: { apiKey, baseUrl, model },
|
|
nerveRoot: NERVE_ROOT,
|
|
});
|
|
|
|
export default workflow;
|