Skip to main content

meerkat_workgraph/generated/
protocol_work_execution_flow_launch.rs

1// @generated — protocol helpers for `work_execution_flow_launch`
2// Composition: workgraph_flow_bundle, Producer: work_execution, Effect: FlowLaunchRequested
3// Closure policy: AckRequired
4
5use crate::machines::work_execution_lifecycle::{
6    WorkExecutionLifecycleEffect, WorkExecutionLifecycleInput,
7    WorkExecutionLifecycleMachineAuthority, WorkExecutionLifecycleMachineMutator,
8    WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError,
9};
10
11#[derive(Debug, Clone)]
12pub struct WorkExecutionFlowLaunchObligation {
13    pub binding_id: String,
14    pub run_id: String,
15}
16
17#[macro_export]
18macro_rules! work_execution_flow_launch_feedback_input_patterns {
19    () => {
20        $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::ConfirmFlowStarted
21        | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::ObserveFlowRunning
22        | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::ObserveFlowCompleted
23        | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::ObserveFlowFailed { .. }
24        | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::ObserveFlowCanceled { .. }
25        | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::MarkLaunchUncertain { .. }
26        | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::QuarantineLaunch { .. }
27        | $crate::machines::work_execution_lifecycle::WorkExecutionLifecycleInput::ResolveLaunchFailed { .. }
28    };
29}
30
31pub fn extract_obligations(
32    transition: &WorkExecutionLifecycleMachineTransition,
33) -> Vec<WorkExecutionFlowLaunchObligation> {
34    transition
35        .effects()
36        .iter()
37        .filter_map(|effect| match effect {
38            WorkExecutionLifecycleEffect::FlowLaunchRequested { binding_id, run_id } => {
39                Some(WorkExecutionFlowLaunchObligation {
40                    binding_id: binding_id.clone(),
41                    run_id: run_id.clone(),
42                })
43            }
44            _ => None,
45        })
46        .collect()
47}
48
49pub fn submit_confirm_flow_started(
50    authority: &mut WorkExecutionLifecycleMachineAuthority,
51    _obligation: WorkExecutionFlowLaunchObligation,
52) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
53    let transition = authority.apply(WorkExecutionLifecycleInput::ConfirmFlowStarted)?;
54    Ok(transition)
55}
56
57pub fn submit_observe_flow_running(
58    authority: &mut WorkExecutionLifecycleMachineAuthority,
59    _obligation: WorkExecutionFlowLaunchObligation,
60) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
61    let transition = authority.apply(WorkExecutionLifecycleInput::ObserveFlowRunning)?;
62    Ok(transition)
63}
64
65pub fn submit_observe_flow_completed(
66    authority: &mut WorkExecutionLifecycleMachineAuthority,
67    _obligation: WorkExecutionFlowLaunchObligation,
68) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
69    let transition = authority.apply(WorkExecutionLifecycleInput::ObserveFlowCompleted)?;
70    Ok(transition)
71}
72
73pub fn submit_observe_flow_failed(
74    authority: &mut WorkExecutionLifecycleMachineAuthority,
75    _obligation: WorkExecutionFlowLaunchObligation,
76    observed_failure_detail: Option<String>,
77) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
78    let transition = authority.apply(WorkExecutionLifecycleInput::ObserveFlowFailed {
79        detail: observed_failure_detail,
80    })?;
81    Ok(transition)
82}
83
84pub fn submit_observe_flow_canceled(
85    authority: &mut WorkExecutionLifecycleMachineAuthority,
86    _obligation: WorkExecutionFlowLaunchObligation,
87    observed_cancellation_detail: Option<String>,
88) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
89    let transition = authority.apply(WorkExecutionLifecycleInput::ObserveFlowCanceled {
90        detail: observed_cancellation_detail,
91    })?;
92    Ok(transition)
93}
94
95pub fn submit_mark_launch_uncertain(
96    authority: &mut WorkExecutionLifecycleMachineAuthority,
97    _obligation: WorkExecutionFlowLaunchObligation,
98    launch_uncertainty_detail: String,
99) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
100    let transition = authority.apply(WorkExecutionLifecycleInput::MarkLaunchUncertain {
101        detail: launch_uncertainty_detail,
102    })?;
103    Ok(transition)
104}
105
106pub fn submit_quarantine_launch(
107    authority: &mut WorkExecutionLifecycleMachineAuthority,
108    _obligation: WorkExecutionFlowLaunchObligation,
109    launch_quarantine_detail: String,
110) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
111    let transition = authority.apply(WorkExecutionLifecycleInput::QuarantineLaunch {
112        detail: launch_quarantine_detail,
113    })?;
114    Ok(transition)
115}
116
117pub fn submit_resolve_launch_failed(
118    authority: &mut WorkExecutionLifecycleMachineAuthority,
119    _obligation: WorkExecutionFlowLaunchObligation,
120    launch_failure_detail: String,
121) -> Result<WorkExecutionLifecycleMachineTransition, WorkExecutionLifecycleMachineTransitionError> {
122    let transition = authority.apply(WorkExecutionLifecycleInput::ResolveLaunchFailed {
123        detail: launch_failure_detail,
124    })?;
125    Ok(transition)
126}