- Each workflow factory takes defaultAdapter: AgentFn + adapters?: Partial<Record<RoleUnion, AgentFn>> - index.ts only overrides roles that differ from default (planner/coder use cursor, rest fallback) - Cleaner call sites, type-safe role names Refs #15
38 lines
1.0 KiB
TypeScript
38 lines
1.0 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({
|
|
defaultAdapter: hermesAdapter,
|
|
adapters: {
|
|
plan: createCursorAdapter({
|
|
type: "cursor",
|
|
mode: "ask",
|
|
model: "auto",
|
|
timeout: CURSOR_TIMEOUT_MS,
|
|
}),
|
|
implement: createCursorAdapter({
|
|
type: "cursor",
|
|
model: "auto",
|
|
timeout: CURSOR_TIMEOUT_MS,
|
|
}),
|
|
},
|
|
nerveRoot: NERVE_ROOT,
|
|
extract: { provider },
|
|
});
|
|
|
|
export default workflow;
|