# car-workflow

Declarative multi-stage workflow orchestration for [Common Agent Runtime](https://github.com/Parslee-ai/car).

## What it does

Composes `car-multi` agent coordination patterns and `car-engine` action proposals into a named, conditional, compensable stage graph.

## Key types

| Type | Purpose |
|------|---------|
| `Workflow` | top-level definition: stages + conditional edges |
| `Stage` / `StageStep` | what each step does — pattern, proposal, sub-workflow |
| `Edge` | conditional transition between stages (reuses `car_ir::Precondition`) |
| `CompensationHandler` | saga-style rollback per stage |
| `WorkflowEngine` | executes the workflow graph |
| `verify_workflow` | static analysis before execution |

## Example (JSON definition)

```json
{
  "id": "review-deploy",
  "name": "Review and Deploy",
  "start": "review",
  "stages": [
    { "id": "review", "name": "Code Review",
      "step": { "type": "pattern", ... } },
    { "id": "deploy", "name": "Deploy",
      "step": { "type": "proposal", ... } }
  ],
  "edges": [
    { "from": "review", "to": "deploy",
      "conditions": [{"key": "stage.review.succeeded", "operator": "eq", "value": true}] }
  ]
}
```

## Where it fits

Surfaced via the WebSocket `workflow.run` and `workflow.verify` methods. Use `car-multi` directly for ad-hoc coordination patterns; reach for `car-workflow` when you want a named, persistable, compensable definition with conditional flow control.
