pub enum EventKind {
Show 44 variants
WorkflowStarted {
workflow_id: String,
workflow_version: String,
initial_input: Value,
},
WorkflowCompleted {
final_state: Value,
},
WorkflowFailed {
error: String,
},
WorkflowCancelled {
reason: Option<String>,
},
NodeScheduled {
node_id: NodeId,
queue_type: String,
},
NodeStarted {
node_id: NodeId,
worker_id: String,
attempt: u32,
},
NodeCompleted {
node_id: NodeId,
output: Value,
state_patch: Value,
duration_ms: u64,
gen_ai_system: Option<String>,
gen_ai_model: Option<String>,
input_tokens: Option<u64>,
output_tokens: Option<u64>,
finish_reason: Option<String>,
cost_usd: Option<f64>,
provenance: Option<Box<ProvenanceMetadata>>,
},
NodeFailed {
node_id: NodeId,
error: String,
attempt: u32,
retryable: bool,
},
NodeSkipped {
node_id: NodeId,
reason: String,
},
NodeCancelled {
node_id: NodeId,
},
RetryScheduled {
node_id: NodeId,
attempt: u32,
delay_ms: u64,
},
InterruptRaised {
node_id: NodeId,
reason: String,
state_for_review: Value,
},
ApprovalReceived {
node_id: NodeId,
user_id: String,
decision: ApprovalDecision,
comment: Option<String>,
state_patch: Option<Value>,
},
TimerCreated {
node_id: NodeId,
fire_at: DateTime<Utc>,
correlation_key: Option<String>,
},
TimerFired {
node_id: NodeId,
correlation_key: Option<String>,
},
ExternalEventReceived {
correlation_key: String,
payload: Value,
},
ChildWorkflowStarted {
node_id: NodeId,
child_execution_id: String,
child_workflow_id: String,
},
ChildWorkflowCompleted {
node_id: NodeId,
child_execution_id: String,
result: Value,
},
ChildWorkflowFailed {
node_id: NodeId,
child_execution_id: String,
error: String,
},
BudgetExceeded {
node_id: NodeId,
kind: String,
limit: u64,
current: u64,
},
TokenBudgetExceeded {
node_id: NodeId,
kind: String,
limit: u64,
current: u64,
},
CostBudgetExceeded {
node_id: NodeId,
limit_usd: f64,
current_usd: f64,
},
AutonomyLimitReached {
node_id: NodeId,
agent_ref: String,
limit_type: String,
limit_value: Value,
actual_value: Value,
},
CircuitBreakerTripped {
node_id: NodeId,
agent_ref: String,
consecutive_errors: u32,
threshold: u32,
},
EscalationRequired {
node_id: NodeId,
agent_ref: String,
reason: String,
escalation_target: String,
},
PolicyViolation {
node_id: NodeId,
rule: String,
decision: String,
policy_scope: String,
},
ToolApprovalRequired {
node_id: NodeId,
tool_name: String,
approver: String,
context: Value,
},
StrategyStarted {
strategy: String,
config: Value,
},
PlanGenerated {
steps: Vec<String>,
},
IterationStarted {
iteration: u32,
},
ToolCalled {
node_id: NodeId,
tool: String,
},
CriticVerdict {
node_id: NodeId,
score: f64,
passed: bool,
feedback: Option<String>,
},
IterationCompleted {
iteration: u32,
cost_delta_usd: Option<f64>,
input_tokens: u64,
output_tokens: u64,
},
StrategyLimitHit {
limit_type: String,
limit_value: Value,
actual_value: Value,
},
StrategyCompleted {
iterations: u32,
total_cost_usd: Option<f64>,
},
CoordinatorDiscovery {
node_id: NodeId,
query_skills: Vec<String>,
query_trust_domain: Option<String>,
candidates: Vec<Value>,
filtered_out: Vec<Value>,
},
CoordinatorScoring {
node_id: NodeId,
rankings: Vec<Value>,
spread: f64,
weights: Value,
},
CoordinatorDecision {
node_id: NodeId,
selected: Option<String>,
method: String,
reasoning: Option<String>,
confidence: f64,
rejected: Vec<Value>,
tiebreaker_tokens: Option<Value>,
tiebreaker_cost: Option<f64>,
},
AgentToolInvoked {
node_id: NodeId,
agent_uri: String,
mode: String,
protocol: String,
input_hash: String,
},
AgentToolProgress {
node_id: NodeId,
chunk_index: u32,
partial_output_summary: String,
},
AgentToolTurn {
node_id: NodeId,
turn_number: u32,
direction: String,
content_summary: String,
tokens: u32,
cost: f64,
},
AgentToolCompleted {
node_id: NodeId,
output: Value,
provenance: Option<Value>,
total_cost: f64,
latency_ms: u64,
total_turns: Option<u32>,
},
AgentToolTerminated {
node_id: NodeId,
reason: String,
chunks_received: u32,
partial_output: Option<Value>,
cost: f64,
},
AgentToolFailed {
node_id: NodeId,
failure_type: String,
message: String,
retryable: bool,
},
}Expand description
All possible event kinds in the JamJet event log.
Variants§
WorkflowStarted
WorkflowCompleted
WorkflowFailed
WorkflowCancelled
NodeScheduled
NodeStarted
NodeCompleted
Fields
§
gen_ai_system: Option<String>AI provider system (e.g. “anthropic”, “openai”). None for non-model nodes.
§
provenance: Option<Box<ProvenanceMetadata>>Provenance metadata for research traceability.
NodeFailed
NodeSkipped
NodeCancelled
RetryScheduled
InterruptRaised
ApprovalReceived
Fields
§
decision: ApprovalDecisionTimerCreated
TimerFired
ExternalEventReceived
ChildWorkflowStarted
ChildWorkflowCompleted
ChildWorkflowFailed
BudgetExceeded
TokenBudgetExceeded
Fields
CostBudgetExceeded
AutonomyLimitReached
Fields
CircuitBreakerTripped
EscalationRequired
Fields
PolicyViolation
Fields
ToolApprovalRequired
StrategyStarted
Emitted when a reasoning strategy begins execution.
PlanGenerated
Emitted by plan-and-execute when the plan is generated.
IterationStarted
Emitted at the start of each reasoning loop iteration.
ToolCalled
Emitted each time a tool is invoked within a strategy loop.
CriticVerdict
Emitted by critic/verifier nodes with a quality score.
IterationCompleted
Emitted at the end of each iteration with cost/token delta.
StrategyLimitHit
Emitted when a strategy limit (max_iterations, max_cost_usd, timeout) is hit.
Workflow transitions to LimitExceeded after this event.
StrategyCompleted
Emitted when strategy execution completes successfully.
CoordinatorDiscovery
Fields
CoordinatorScoring
CoordinatorDecision
Fields
AgentToolInvoked
AgentToolProgress
AgentToolTurn
Fields
AgentToolCompleted
Fields
AgentToolTerminated
AgentToolFailed
Implementations§
Trait Implementations§
Source§impl<'de> Deserialize<'de> for EventKind
impl<'de> Deserialize<'de> for EventKind
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Auto Trait Implementations§
impl Freeze for EventKind
impl RefUnwindSafe for EventKind
impl Send for EventKind
impl Sync for EventKind
impl Unpin for EventKind
impl UnsafeUnpin for EventKind
impl UnwindSafe for EventKind
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more