Traces are the receipt layer for agent systems.
They show what the system believed, decided, scheduled, blocked, retried, and committed.
type TraceEvent = {
id: string;
roomId: string;
kind: string;
summary: string;
payload?: unknown;
createdAt: number;
};utterance_receivedhuman_steer_receiveddevice_joineddevice_left
intent_classifiedintent_ambiguousintent_rejected
state_reducedgoal_createdgoal_replacedgoal_constrainedgoal_completedgoal_blockedgoal_canceled
scheduler_selectedworker_scheduledworker_blockedworker_startedworker_completedworker_failedworker_canceledworker_retried
permission_checkedpermission_deniedbudget_reservedbudget_exhausted
tool_call_startedtool_call_completedtool_call_failed
artifact_createdartifact_updatedartifact_reviewed
verification_startedverification_passedverification_failed
Payloads should include:
- relevant ids
- before and after state when compact
- policy decision
- error reason
- worker attempt
- source references
Payloads should not include:
- secrets
- full private credentials
- unnecessary personal data
- unbounded transcript dumps
Trace rows should be:
- chronological
- filterable by kind
- expandable
- copyable
- linked to workers, goals, and artifacts
If an action changes state, it deserves a trace.