Interface: NonEmptyTurnRule
Defined in: src/batteries/validation/types.ts:341
Requires a turn to carry something the provider can interpret.
Remarks
Two vendors reject an assistant turn that is empty of both prose and a tool call, in two different ways, and one is silent:
- Mistral answers a 400: "Assistant message must have either content or tool_calls, but not none."
- Gemini rejects a request whose final
modelturn carries only athought: truepart withfinishReason: MALFORMED_RESPONSE— measured 4 of 4, against STOP-with-text when the same history ends on the user turn.
Both are the same underlying defect: a turn the model cannot act on.
Properties
| Property | Type | Description | Defined in |
|---|---|---|---|
id | string | Stable identifier used in findings. | src/batteries/validation/types.ts:345 |
onlyTerminal? | boolean | When true, only the FINAL turn is checked. Gemini's constraint is terminal-position specific; Mistral's applies to any assistant turn in the history. | src/batteries/validation/types.ts:352 |
role | "user" | "assistant" | Role whose turns must not be empty. | src/batteries/validation/types.ts:347 |
severity? | "blocking" | "advisory" | See OrderRule.severity. Omitted means advisory. | src/batteries/validation/types.ts:354 |
type | "nonEmptyTurn" | Discriminator selecting the empty-turn evaluator. | src/batteries/validation/types.ts:343 |