The mapping
Run it:
Documentation Index
Fetch the complete documentation index at: /llms.txt
Use this file to discover all available pages before exploring further.
┌────────────────────────── wave ──────────────────────────┐
tasks ──►│ worker(worker-1) worker(worker-2) worker(worker-3) │──► outputs
│ (bounded parallel, concurrency-sized chunks) │
└──────────────────────────────────────────────────────────┘
│ aggregate (deterministic merge)
▼
verifier: { verdict, gaps[] }
│ │
'pass' │ │ 'extend'
▼ ▼
result gaps → tasks → next wave
| WAVES step | Lousho surface |
|---|---|
| Workers | Promise.all over agent.send() — the harness owns the wave shape; each worker is a fresh createAgent so contexts stay clean |
| Aggregate | a plain function — deterministic, so a dropped contribution is a bug, not a silent merge |
| Verify | createAgent({ output: VERDICT }) — the Jev-style typed-decision idiom: { verdict: 'pass'|'extend', gaps: string[] } |
| Extend | verdict.gaps.map(gapToTask) seeds the next wave’s task list |
npm run example:waves # offline, scripted workers + verifier
OPENROUTER_API_KEY=… npx tsx examples/waves/index.ts # live