diff --git a/workflows/sense-generator/index.ts b/workflows/sense-generator/index.ts index f3fce38..594c936 100644 --- a/workflows/sense-generator/index.ts +++ b/workflows/sense-generator/index.ts @@ -3,14 +3,20 @@ import { buildPlannerRole } from "./roles/planner/index.js"; import { buildCoderRole } from "./roles/coder/index.js"; import { buildTesterRole } from "./roles/tester/index.js"; import { moderator } from "./moderator.js"; +import { resolveDashScopeProvider } from "./roles/shared.js"; import type { SenseMeta } from "./roles/types.js"; +const provider = await resolveDashScopeProvider(); +if (provider === null) { + throw new Error("Cannot build workflow: set DASHSCOPE_API_KEY and DASHSCOPE_BASE_URL"); +} + const workflow: WorkflowDefinition = { name: "sense-generator", roles: { - planner: await buildPlannerRole(), - coder: await buildCoderRole(), - tester: await buildTesterRole(), + planner: buildPlannerRole(provider), + coder: buildCoderRole(provider), + tester: buildTesterRole(provider), }, moderator, }; diff --git a/workflows/sense-generator/roles/coder/index.ts b/workflows/sense-generator/roles/coder/index.ts index dc670a1..1d8598b 100644 --- a/workflows/sense-generator/roles/coder/index.ts +++ b/workflows/sense-generator/roles/coder/index.ts @@ -1,14 +1,11 @@ +import type { LlmProvider } from "@uncaged/nerve-workflow-utils"; import { createCursorRole } from "@uncaged/nerve-workflow-utils"; -import { resolveDashScopeProvider, NERVE_ROOT, SENSES_DIR } from "../shared.js"; +import { NERVE_ROOT, SENSES_DIR } from "../shared.js"; import { coderMetaSchema } from "../types.js"; import type { SenseMeta } from "../types.js"; import { coderPrompt } from "./prompt.js"; -export async function buildCoderRole() { - const provider = await resolveDashScopeProvider(); - if (provider === null) { - throw new Error("Cannot create coder: set DASHSCOPE_API_KEY and DASHSCOPE_BASE_URL"); - } +export function buildCoderRole(provider: LlmProvider) { return createCursorRole({ cwd: NERVE_ROOT, mode: "default", diff --git a/workflows/sense-generator/roles/planner/index.ts b/workflows/sense-generator/roles/planner/index.ts index ae0ee0e..a929894 100644 --- a/workflows/sense-generator/roles/planner/index.ts +++ b/workflows/sense-generator/roles/planner/index.ts @@ -1,5 +1,6 @@ +import type { LlmProvider } from "@uncaged/nerve-workflow-utils"; import { createCursorRole } from "@uncaged/nerve-workflow-utils"; -import { resolveDashScopeProvider, buildSenseExamples, getNerveYaml, NERVE_ROOT } from "../shared.js"; +import { buildSenseExamples, getNerveYaml, NERVE_ROOT } from "../shared.js"; import { plannerMetaSchema } from "../types.js"; import type { SenseMeta } from "../types.js"; import { plannerPrompt } from "./prompt.js"; @@ -7,11 +8,7 @@ import { plannerPrompt } from "./prompt.js"; const senseExamples = buildSenseExamples(); const nerveYaml = getNerveYaml(); -export async function buildPlannerRole() { - const provider = await resolveDashScopeProvider(); - if (provider === null) { - throw new Error("Cannot create planner: set DASHSCOPE_API_KEY and DASHSCOPE_BASE_URL"); - } +export function buildPlannerRole(provider: LlmProvider) { return createCursorRole({ cwd: NERVE_ROOT, mode: "ask", diff --git a/workflows/sense-generator/roles/tester/index.ts b/workflows/sense-generator/roles/tester/index.ts index c4a4b7e..c9508ab 100644 --- a/workflows/sense-generator/roles/tester/index.ts +++ b/workflows/sense-generator/roles/tester/index.ts @@ -1,14 +1,11 @@ +import type { LlmProvider } from "@uncaged/nerve-workflow-utils"; import { createHermesRole } from "@uncaged/nerve-workflow-utils"; -import { resolveDashScopeProvider, NERVE_ROOT, SENSES_DIR } from "../shared.js"; +import { NERVE_ROOT, SENSES_DIR } from "../shared.js"; import { testerMetaSchema } from "../types.js"; import type { SenseMeta } from "../types.js"; import { testerPrompt } from "./prompt.js"; -export async function buildTesterRole() { - const provider = await resolveDashScopeProvider(); - if (provider === null) { - throw new Error("Cannot create tester: set DASHSCOPE_API_KEY and DASHSCOPE_BASE_URL"); - } +export function buildTesterRole(provider: LlmProvider) { return createHermesRole({ prompt: async (threadId) => testerPrompt({ threadId, sensesDir: SENSES_DIR, nerveRoot: NERVE_ROOT }), extract: { provider, schema: testerMetaSchema },