from mubit import Client
import os
run_id = "agent:planner:task-123"
client = Client(
endpoint=os.getenv("MUBIT_ENDPOINT", "https://api.mubit.ai"),
api_key=os.environ["MUBIT_API_KEY"],
run_id=run_id,
transport="http",
)
# Step 1: Planning
plan = call_llm("Break down the task into sub-steps")
client.record_step_outcome(
step_id="step-1-planning",
step_name="initial_planning",
outcome="success",
signal=0.8,
rationale="Generated a clear 3-step plan with dependencies identified",
directive_hint="Include sub-task dependencies explicitly in plans",
)
# Step 2: Tool call
tool_result = execute_tool("search_api", query="relevant docs")
client.record_step_outcome(
step_id="step-2-search",
step_name="search_api",
outcome="failure",
signal=-0.6,
rationale="Search returned no results — query was too narrow",
directive_hint="Use broader search terms before narrowing",
)
# Step 3: Recovery
recovery = call_llm("Retry with broader query")
client.record_step_outcome(
step_id="step-3-recovery",
step_name="search_retry",
outcome="success",
signal=0.9,
rationale="Broader query found the target document",
)
# Reflect with step outcomes to produce step-attributed lessons
lessons = client.reflect(include_step_outcomes=True)
# Run-level outcome
client.record_outcome(
outcome="success",
signal=0.7,
rationale="Task completed after one retry",
)