The JobContext for this run; use it to reach the running session and
the room.
How the simulated user interacts with the agent (text chat or audio). Unspecified is treated as text, since simulations predating the field were all text-only.
The simulator's verdict (its LLM judgment of the conversation). Read-only; recorded alongside your userVerdict.
Only available once the simulation has ended, i.e. inside
onSimulationEnd. Throws if accessed earlier (e.g. from the entrypoint).
Your veto set via fail, or undefined if you didn't veto the run.
Veto this run from your own checks (e.g. final DB state diverged).
The effective result is the AND of both verdicts, so this can only fail a run the simulator passed, never rescue one. The simulator's verdict is still reported. The last call wins if you call fail more than once.
The scenario's userdata decoded from its JSON string ({} if empty).
Passed to the
onSimulationEndcallback while running under a simulation.Carries two verdicts, both recorded for the run:
scenario.userdata). The effective result is the AND of the two: your check can fail a run the simulator passed, but it can never rescue one, so there is nosuccess(); not calling fail leaves the simulator's verdict to stand.Use jobContext to reach the running session and the room.