Termination¶
Composable stop conditions — combine with | (OR) and & (AND):
from locus.core.termination import MaxIterations, ToolCalled, ConfidenceMet
termination = (
ToolCalled("submit") & ConfidenceMet(0.9)
) | MaxIterations(15)
Base¶
TerminationCondition ¶
Bases: ABC
Base class for composable termination conditions.
Subclasses implement should_terminate(state) which returns
(should_stop: bool, reason: str | None).
Conditions are composable:
- a | b — stop if either condition is met (OR)
- a & b — stop if both conditions are met (AND)
check
abstractmethod
¶
Check if termination condition is met.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
state
|
AgentState
|
Current agent state. |
required |
**context
|
Any
|
Additional context (last_message, tool_names, etc.) |
{}
|
Returns:
| Type | Description |
|---|---|
tuple[bool, str | None]
|
Tuple of (should_stop, reason). |
Source code in src/locus/core/termination.py
reset ¶
__or__ ¶
__and__ ¶
Conditions¶
MaxIterations ¶
Bases: TerminationCondition
Stop after N iterations.
Source code in src/locus/core/termination.py
TokenLimit ¶
Bases: TerminationCondition
Stop when token usage exceeds a limit.
Source code in src/locus/core/termination.py
TextMention ¶
Bases: TerminationCondition
Stop when specific text appears in the last message.
Source code in src/locus/core/termination.py
TimeLimit ¶
Bases: TerminationCondition
Stop after a time duration.
Source code in src/locus/core/termination.py
ToolCalled ¶
Bases: TerminationCondition
Stop when a specific tool is called.
Source code in src/locus/core/termination.py
ConfidenceMet ¶
Bases: TerminationCondition
Stop when confidence threshold is reached.
Source code in src/locus/core/termination.py
NoToolCalls ¶
CustomCondition ¶
Bases: TerminationCondition
Stop based on a custom function.
Example
condition = CustomCondition( lambda state, **ctx: (state.iteration > 3 and "error" in str(state.messages[-1].content), "custom") )
Source code in src/locus/core/termination.py
Composition operators¶
OrCondition ¶
Bases: TerminationCondition
Stop if ANY child condition is met.
Source code in src/locus/core/termination.py
AndCondition ¶
Bases: TerminationCondition
Stop only if ALL child conditions are met.