<!-- Generated by scripts/gen-docs.ts from the TSDoc in src/. Do not edit by hand. -->

# `workflows/chain`

Source: [`src/workflows/chain.ts`](https://github.com/AI-for-dev/combo/blob/main/src/workflows/chain.ts)

`chain`: 1 → 1 → 1. The output of step *n* is the input of step *n+1*.

## `chain`

*function*

```typescript
export async function chain(options: ChainOptions): Promise<WorkflowResult> { /* … */ }
```

Runs the agents in sequence, feeding each one the previous output.

Lifetime is the whole point of this combinator:
- `"task"`: one spawn per step. Every step reads the code afresh, with no
  accumulated bias, and pays to re-read it.
- `"workflow"`: one spawn per *distinct agent*, reused when it comes back.
  The reviewer does not repeat its remarks, the coder remembers what it was
  told. This is the "team" regime.

A failing step stops the chain - there is no input left for the next one -
and its `Result` is returned as is. The workflow itself never throws.

Whoever opens, closes: every subagent this function spawned is closed in the
`finally`, cancellation included.

## `ChainOptions`

*type*

```typescript
export type ChainOptions = WorkflowOptions & {
	/** The agents to run, in order. The same agent may appear several times. */
	steps: Agent[];
	/** The task given to the first step. */
	input: string;
};
```

What a chain needs: the agents, in order, and the task for the first one.
