use aion_core::{ActivityId, Payload, WorkflowId};
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct AgentRunSpec {
pub workflow_id: WorkflowId,
pub activity_id: ActivityId,
pub attempt: u32,
pub activity_type: String,
pub input: Payload,
}
impl AgentRunSpec {
#[must_use]
pub fn new(
workflow_id: WorkflowId,
activity_id: ActivityId,
attempt: u32,
activity_type: impl Into<String>,
input: Payload,
) -> Self {
Self {
workflow_id,
activity_id,
attempt,
activity_type: activity_type.into(),
input,
}
}
}
#[cfg(test)]
mod tests {
use aion_core::{ActivityId, ContentType, Payload, WorkflowId};
use super::AgentRunSpec;
#[test]
fn spec_carries_run_identity_and_input() {
let workflow_id = WorkflowId::new_v4();
let activity_id = ActivityId::from_sequence_position(4);
let input = Payload::new(ContentType::Json, b"{}".to_vec());
let spec = AgentRunSpec::new(
workflow_id.clone(),
activity_id.clone(),
2,
"dev",
input.clone(),
);
assert_eq!(spec.workflow_id, workflow_id);
assert_eq!(spec.activity_id, activity_id);
assert_eq!(spec.attempt, 2);
assert_eq!(spec.activity_type, "dev");
assert_eq!(spec.input, input);
}
}