- 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
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import { join } from "node:path";
|
|
import { createCursorAdapter } from "@uncaged/nerve-adapter-cursor";
|
|
import { hermesAdapter } from "@uncaged/nerve-adapter-hermes";
|
|
import { createSolveIssueWorkflow } from "./build.js";
|
|
import { resolveDashScopeProvider } from "./lib/provider.js";
|
|
|
|
const HOME = process.env.HOME ?? "/home/azureuser";
|
|
const NERVE_ROOT = join(HOME, ".uncaged-nerve");
|
|
|
|
const provider = await resolveDashScopeProvider(NERVE_ROOT);
|
|
|
|
if (provider === null) {
|
|
throw new Error("Set DASHSCOPE_API_KEY and DASHSCOPE_BASE_URL (or cfg get equivalents)");
|
|
}
|
|
|
|
const CURSOR_TIMEOUT_MS = 300_000;
|
|
|
|
const workflow = createSolveIssueWorkflow({
|
|
adapters: {
|
|
"read-issue": hermesAdapter,
|
|
prepare: hermesAdapter,
|
|
plan: createCursorAdapter({
|
|
type: "cursor",
|
|
mode: "ask",
|
|
model: "auto",
|
|
timeout: CURSOR_TIMEOUT_MS,
|
|
}),
|
|
implement: createCursorAdapter({
|
|
type: "cursor",
|
|
model: "auto",
|
|
timeout: CURSOR_TIMEOUT_MS,
|
|
}),
|
|
committer: hermesAdapter,
|
|
review: hermesAdapter,
|
|
test: hermesAdapter,
|
|
publish: hermesAdapter,
|
|
},
|
|
nerveRoot: NERVE_ROOT,
|
|
extract: { provider },
|
|
});
|
|
|
|
export default workflow;
|