diff --git a/docs/rfc-003-agent-config-layer.md b/docs/rfc-003-agent-config-layer.md index fdfe029..a15d36a 100644 --- a/docs/rfc-003-agent-config-layer.md +++ b/docs/rfc-003-agent-config-layer.md @@ -82,7 +82,7 @@ const workflow: WorkflowSpec = { roles: { architect: { adapter: cursorAdapter, prompt: architectPrompt, meta: architectSchema }, coder: { adapter: createCursorAdapter({ model: "claude-sonnet-4", timeout: 600 }), prompt: coderPrompt, meta: coderSchema }, - reviewer: { adapter: hermesAdapter, prompt: reviewPrompt, meta: reviewSchema, timeout: "60s" }, + reviewer: { adapter: hermesAdapter, prompt: reviewPrompt, meta: reviewSchema }, deployer: { adapter: hermesAdapter, prompt: deployPrompt, meta: deploySchema }, }, moderator, @@ -162,7 +162,6 @@ type RoleSpec = { adapter: AgentFn; prompt: PromptInput; meta: Schema; - timeout: string | null; }; ``` @@ -170,22 +169,20 @@ Static prompts cover simple cases. Dynamic prompts (functions) are needed when t ### Timeout Resolution -Two-layer: adapter default + role override. +Timeout is an **adapter concern**, not a role concern. Roles define *what to do* (prompt + schema); adapters define *how to do it* (tool, model, timeout). -1. Adapter instance carries its default timeout (set at creation or from default export) -2. Role definition can override for specific scenarios +When different roles need different timeouts, create separate adapter instances: ```ts import { cursorAdapter, createCursorAdapter } from "@uncaged/nerve-adapter-cursor"; -// cursorAdapter has built-in default (300s) -// Or create with custom timeout: -const longRunAdapter = createCursorAdapter({ model: "auto", timeout: 600 }); +const fastCursor = createCursorAdapter({ model: "auto", timeout: 60 }); +const slowCursor = createCursorAdapter({ model: "auto", timeout: 600 }); -// Role override — review is faster -reviewer: { adapter: cursorAdapter, ..., timeout: "60s" } -// coder uses adapter default (300s) -coder: { adapter: cursorAdapter, ... } +roles: { + reviewer: { adapter: fastCursor, prompt: reviewPrompt, meta: reviewSchema }, + coder: { adapter: slowCursor, prompt: coderPrompt, meta: coderSchema }, +} ``` ### No Runtime Fallback