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

# `flow/condition/compile`

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

A condition checked whole against the types of what it may read, before the
first spawn.

Every address must exist and be typed, the result must be a boolean and
compared sides must agree. Enums are strict: `"aproved"` compared with an
`approved | rejected` field is refused here, since at run time it would only
ever be `false` and the loop would spin to its cap. A string a model wrote
in the person's language compares to no literal at all, for the same reason:
`"Yes"` against a clicked `"Oui"` is silently false.

Problems are collected, not thrown at the first: a flow is refused with
every fault at once. A part already refused is read no further, so one typo
is one problem and not the three that follow from it.

## `Condition`

*type*

```typescript
export type Condition = {
	/** The condition as the file writes it. */
	readonly source: string;
	/** Its parsed form, which only the evaluator reads. */
	readonly expr: Expr;
	readonly [checked]: true;
};
```

A condition that passed the check. Only `compileCondition` makes one, and only one can be evaluated.
