eoka-protocol 0.4.0

Protocol and tool catalog definitions for eoka browser automation
Documentation
pub use eoka::{
    Action, ActionOptions, ActionOutcome, ActionReceipt, DispatchState, Expectation, LocatorQuery,
    LocatorSpec,
};
use serde::{Deserialize, Serialize};

#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
pub struct ActionPerformArgs {
    pub operation_id: String,
    pub action: Action,
    #[serde(default)]
    pub options: ActionOptions,
}

#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
pub struct OperationIdArgs {
    pub id: String,
}

#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
pub struct OperationWaitArgs {
    pub id: String,
    #[serde(default = "wait_timeout")]
    pub timeout_ms: u64,
}
fn wait_timeout() -> u64 {
    30_000
}

#[derive(Debug, Clone, Default, Serialize, Deserialize, schemars::JsonSchema)]
pub struct OperationListArgs {
    #[serde(default)]
    pub before_ms: Option<u64>,
    #[serde(default)]
    pub limit: Option<u32>,
}

#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum OperationState {
    Running,
    Finished,
    Interrupted,
    Expired,
}

#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
pub struct OperationRecord {
    pub id: String,
    pub runtime_id: String,
    pub target_id: String,
    pub action: String,
    pub state: OperationState,
    pub outcome: ActionOutcome,
    pub dispatch_intent: bool,
    pub preparation_intent: bool,
    pub started_at_ms: u64,
    pub finished_at_ms: Option<u64>,
    pub receipt: Option<ActionReceipt>,
    pub error_code: Option<String>,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize, schemars::JsonSchema)]
pub struct ActionSettings {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub operation_id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub expect: Option<Expectation>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub timeout_ms: Option<u64>,
}

#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
pub struct ActionCommandArgs {
    pub operation_id: String,
    pub command: String,
    pub arguments: serde_json::Value,
}

#[derive(Debug, Clone, serde::Serialize, serde::Deserialize, schemars::JsonSchema)]
pub struct ActionBatchArgs {
    pub actions: Vec<ActionPerformArgs>,
}