- 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
37 lines
1.0 KiB
TypeScript
37 lines
1.0 KiB
TypeScript
import { join } from "node:path";
|
|
import { createCursorAdapter, cursorAdapter } from "@uncaged/nerve-adapter-cursor";
|
|
import { hermesAdapter } from "@uncaged/nerve-adapter-hermes";
|
|
import { createDevelopWorkflowWorkflow } 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 CURSOR_TIMEOUT_MS = 300_000;
|
|
|
|
const workflow = createDevelopWorkflowWorkflow({
|
|
adapters: {
|
|
planner: createCursorAdapter({
|
|
type: "cursor",
|
|
mode: "ask",
|
|
model: "auto",
|
|
timeout: CURSOR_TIMEOUT_MS,
|
|
}),
|
|
coder: cursorAdapter,
|
|
reviewer: hermesAdapter,
|
|
tester: hermesAdapter,
|
|
committer: hermesAdapter,
|
|
},
|
|
extract: { provider: { apiKey, baseUrl, model } },
|
|
nerveRoot: NERVE_ROOT,
|
|
});
|
|
|
|
export default workflow;
|