This repository has been archived on 2026-06-01. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
nerve/.knowledge/adapter.md
T
xiaomo 97840e25ab chore: add .knowledge/ cards + knowledge.yaml
7 curated knowledge cards extracted from RFCs and docs:
- architecture: core pipeline, extension points, process isolation
- sense: compute behavior, Sense→Workflow, config
- workflow: engine, threads, WorkflowSpec
- adapter: AgentFn protocol, available adapters, extract layer
- coding-conventions: functional-first, Result type, naming
- monorepo: package structure, dependency rules
- knowledge-layer: sync/query CLI, embedding service

knowledge.yaml indexes .knowledge/**/*.md only.
2026-04-29 09:29:29 +00:00

1.3 KiB

Agent Adapters (RFC-003)

Adapter = capability. Role = scenario. Workflows declare adapters directly via import.

AgentFn Protocol

type AgentFn = (prompt: string, context: WorkflowContext) => Promise<string>
  • Input: prompt + context (start frame, messages, workdir, AbortSignal)
  • Output: raw string — structured extraction is separate
  • Adapter handles tool-specific details internally

Available Adapters

Package Adapter Tool
@uncaged/nerve-adapter-cursor cursorAdapter / createCursorAdapter() cursor-agent CLI
@uncaged/nerve-adapter-hermes hermesAdapter / createHermesAdapter() hermes chat CLI

Each exports a default instance (sensible defaults) and a factory for custom config.

Usage in Workflows

import { cursorAdapter } from "@uncaged/nerve-adapter-cursor";

// RoleSpec
{ adapter: cursorAdapter, prompt: "...", meta: schema }

No registry, no nerve.yaml agent config. TypeScript catches missing adapters at compile time.

Extract Layer

Parses agent raw string → typed meta. Configured in nerve.yaml:

extract:
  provider: dashscope
  model: qwen-plus

Two-level merge: global → role override. Retry once on parse failure (feeds error back to LLM), then throw ExtractError.