cookie_agent_protocol/
producer.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3
4use crate::{GoalId, InvocationId, ProducerId, SessionId};
5
6#[derive(Clone, Debug, Deserialize, Eq, Hash, JsonSchema, PartialEq, Serialize)]
17#[serde(tag = "type", rename_all = "snake_case", deny_unknown_fields)]
18pub enum ProducerOwner {
19 Plugin { plugin: String },
20 Delegation { invocation_id: InvocationId },
21 Goal { goal_id: GoalId },
22 GoalControl { goal_id: GoalId },
23 Agent { session_id: SessionId },
24}
25
26#[derive(Clone, Copy, Debug, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
29#[serde(rename_all = "snake_case")]
30pub enum ProducerDeliveryMode {
31 Steer,
32 Queue,
33}
34
35#[derive(Clone, Debug, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
38#[serde(deny_unknown_fields)]
39pub struct ProducerRegistration {
40 pub producer_id: ProducerId,
41 pub producer_owner: ProducerOwner,
42 pub session_id: SessionId,
43 pub age_ms: u64,
44}
45
46#[derive(Clone, Copy, Debug, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
47#[serde(rename_all = "snake_case")]
48pub enum PluginRecoveryStatus {
49 Starting,
50 Ready,
51 Failed,
52 Disabled,
53}
54
55#[derive(Clone, Debug, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
58#[serde(deny_unknown_fields)]
59pub struct PluginRecoveryState {
60 pub plugin: String,
61 pub status: PluginRecoveryStatus,
62}