winx_code_agent/runtime/
workflow.rs1use serde::{Deserialize, Serialize};
4
5use crate::state::turn::TurnExplanation;
6
7#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
8pub struct WorkflowObservation {
9 pub output: String,
10 pub output_included: bool,
11 pub screen: Vec<String>,
12 pub activity_seq: u64,
13 pub explanation: TurnExplanation,
14 pub prompt_receipt: Option<PromptReceipt>,
15}
16
17#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize)]
18#[serde(rename_all = "snake_case")]
19pub enum PromptDelivery {
20 Delivered,
21 Uncertain,
22}
23
24#[derive(Clone, Copy, Debug, Eq, PartialEq, Serialize, Deserialize)]
25#[serde(rename_all = "snake_case")]
26pub enum PromptOutcome {
27 Waiting,
28 AwaitingInput,
29 AwaitingApproval,
30 Exited,
31 TimedOut,
32 GenerationChanged,
33}
34
35#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
36pub struct PromptReceipt {
37 pub prompt_id: String,
38 pub delivery: PromptDelivery,
39 pub activity_observed: bool,
40 pub outcome: PromptOutcome,
41 pub generation: u64,
42 pub baseline_activity_seq: u64,
43}
44
45#[derive(Clone, Debug)]
47pub(crate) struct PromptRecord {
48 pub digest: [u8; 32],
49 pub recognizer: String,
50 pub receipt: PromptReceipt,
51 pub activity: std::sync::Arc<std::sync::atomic::AtomicBool>,
52}
53
54#[derive(Clone, Debug)]
56pub struct RetainedWorkflow {
57 pub(crate) generation: u64,
58 pub(crate) activity_seq: u64,
59 pub(crate) screen: Vec<String>,
60 pub(crate) osc_title: String,
61 pub(crate) osc_progress: String,
62 pub(crate) receipts: std::collections::HashMap<String, PromptRecord>,
63}