roder_dynamic_workflows/
host_api.rs1use serde::{Deserialize, Serialize};
2
3use crate::model::WorkflowDefinition;
4
5#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
6#[serde(rename_all = "camelCase")]
7pub struct WorkflowAgentLaunch {
8 pub index: u32,
9 pub role: String,
10 pub lane: String,
11 #[serde(default, skip_serializing_if = "Option::is_none")]
12 pub phase: Option<String>,
13 pub description: String,
14 pub prompt: String,
15 #[serde(default, skip_serializing_if = "Option::is_none")]
16 pub model: Option<String>,
17 pub timeout_seconds: u64,
18 #[serde(default)]
19 pub input: serde_json::Value,
20 pub output: String,
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
24#[serde(rename_all = "camelCase")]
25pub struct WorkflowCheckpoint {
26 pub key: String,
27 #[serde(default)]
28 pub value: serde_json::Value,
29 pub byte_count: u64,
30}
31
32#[derive(Debug, Clone, Serialize, Deserialize, PartialEq)]
33#[serde(rename_all = "camelCase")]
34pub struct WorkflowExecution {
35 pub definition: WorkflowDefinition,
36 pub report: String,
37 #[serde(default)]
38 pub phases: Vec<String>,
39 #[serde(default)]
40 pub agent_launches: Vec<WorkflowAgentLaunch>,
41 #[serde(default)]
42 pub checkpoints: Vec<WorkflowCheckpoint>,
43}
44
45#[derive(Debug, Clone, Deserialize)]
46#[serde(rename_all = "camelCase")]
47pub(crate) struct RawWorkflowExecution {
48 pub report: String,
49 #[serde(default)]
50 pub phases: Vec<String>,
51 #[serde(default)]
52 pub agent_launches: Vec<WorkflowAgentLaunch>,
53 #[serde(default)]
54 pub checkpoints: Vec<WorkflowCheckpoint>,
55}