from qitos.engine.critic import Critic
from qitos.engine.critic_result import CriticResult
class MyMethodCritic(Critic):
"""Critic for MyMethod — stops on completion, retries on failure."""
def __init__(self, max_iterations: int = 3, quality_threshold: float = 0.7):
super().__init__(name="my_method_critic")
self.max_iterations = max_iterations
self.quality_threshold = quality_threshold
def evaluate(self, state, decision, results):
my_state = MyMethodState(**state) if isinstance(state, dict) else state
# Check if task is complete
if my_state.is_complete:
return CriticResult(
action="stop",
reason="Task completed successfully",
score=1.0,
)
# Check iteration budget
if my_state.iterations >= self.max_iterations:
return CriticResult(
action="stop",
reason=f"Max iterations ({self.max_iterations}) reached",
score=0.0,
)
# Check for errors in results — retry with guidance
has_error = any(
hasattr(r, "error") and r.error
for r in (results or [])
)
if has_error:
return CriticResult(
action="retry",
reason="Error detected in results",
score=0.3,
instruction_patch="Review the error and try a different approach.",
)
# Normal continuation
return CriticResult(
action="continue",
reason="Progress being made",
score=0.5,
)