eoka_protocol/
operations.rs1pub use eoka::{
2 Action, ActionOptions, ActionOutcome, ActionReceipt, DispatchState, Expectation, LocatorQuery,
3 LocatorSpec,
4};
5use serde::{Deserialize, Serialize};
6
7#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
8pub struct ActionPerformArgs {
9 pub operation_id: String,
10 pub action: Action,
11 #[serde(default)]
12 pub options: ActionOptions,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
16pub struct OperationIdArgs {
17 pub id: String,
18}
19
20#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
21pub struct OperationWaitArgs {
22 pub id: String,
23 #[serde(default = "wait_timeout")]
24 pub timeout_ms: u64,
25}
26fn wait_timeout() -> u64 {
27 30_000
28}
29
30#[derive(Debug, Clone, Default, Serialize, Deserialize, schemars::JsonSchema)]
31pub struct OperationListArgs {
32 #[serde(default)]
33 pub before_ms: Option<u64>,
34 #[serde(default)]
35 pub limit: Option<u32>,
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
39#[serde(rename_all = "snake_case")]
40pub enum OperationState {
41 Running,
42 Finished,
43 Interrupted,
44 Expired,
45}
46
47#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
48pub struct OperationRecord {
49 pub id: String,
50 pub runtime_id: String,
51 pub target_id: String,
52 pub action: String,
53 pub state: OperationState,
54 pub outcome: ActionOutcome,
55 pub dispatch_intent: bool,
56 pub preparation_intent: bool,
57 pub started_at_ms: u64,
58 pub finished_at_ms: Option<u64>,
59 pub receipt: Option<ActionReceipt>,
60 pub error_code: Option<String>,
61}
62
63#[derive(Debug, Clone, Default, Serialize, Deserialize, schemars::JsonSchema)]
64pub struct ActionSettings {
65 #[serde(default, skip_serializing_if = "Option::is_none")]
66 pub operation_id: Option<String>,
67 #[serde(default, skip_serializing_if = "Option::is_none")]
68 pub expect: Option<Expectation>,
69 #[serde(default, skip_serializing_if = "Option::is_none")]
70 pub timeout_ms: Option<u64>,
71}
72
73#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
74pub struct ActionCommandArgs {
75 pub operation_id: String,
76 pub command: String,
77 pub arguments: serde_json::Value,
78}
79
80#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)]
81pub struct ActionBatchArgs {
82 pub actions: Vec<ActionPerformArgs>,
83}