use mlua_swarm::WorkerBinding;
use serde::{Deserialize, Serialize};
use serde_json::Value;
pub(super) fn current_parent_req_id() -> Option<String> {
None
}
pub(super) fn default_ok_true() -> bool {
true
}
#[derive(Debug, Serialize)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum ServerMsg {
Ask {
req_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
parent_req_id: Option<String>,
task_id: String,
question: Value,
},
HookBefore {
req_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
parent_req_id: Option<String>,
task_id: String,
agent: String,
attempt: u32,
},
HookAfter {
req_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
parent_req_id: Option<String>,
task_id: String,
agent: String,
attempt: u32,
result: Value,
},
Spawn {
req_id: String,
#[serde(skip_serializing_if = "Option::is_none")]
parent_req_id: Option<String>,
task_id: String,
agent: String,
attempt: u32,
capability_token: String,
#[serde(skip_serializing_if = "Option::is_none")]
worker_handle: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
worker: Option<WorkerBinding>,
directive: String,
},
}
#[derive(Debug, Deserialize)]
#[serde(tag = "type", rename_all = "snake_case")]
pub enum ClientMsg {
Answer {
req_id: String,
value: Value,
},
HookAck {
req_id: String,
ok: bool,
#[serde(default)]
reason: Option<String>,
},
SpawnAck {
req_id: String,
#[serde(default)]
value: Value,
#[serde(default = "default_ok_true")]
ok: bool,
#[serde(default)]
error: Option<String>,
},
SpawnHalt {
req_id: String,
#[serde(default)]
value: Value,
#[serde(default)]
reason: Option<String>,
},
}
pub(super) enum PendingReply {
Answer(Value),
HookAck { ok: bool, reason: Option<String> },
SpawnAck {
value: Value,
ok: bool,
error: Option<String>,
},
SpawnHalt {
value: Value,
reason: Option<String>,
},
}