#![forbid(unsafe_code)]
#![warn(missing_docs)]
mod attachment;
mod background;
mod client;
mod daemon;
mod error;
mod frame;
mod server;
use serde::{Deserialize, Serialize};
pub use attachment::{Attachment, ReplyAttachment, reply_attachment};
pub use background::{JobChange, JobStatus, OriginKind, TurnOrigin, job_agent};
pub use client::ClientMessage;
pub use daemon::{
ComponentHealth, ComponentState, ConfirmInfo, ConfirmState, DEFAULT_CONFIRM_SECONDS,
DaemonCommand, DaemonStatus, DelegationInfo, DelegationSummary, MAX_CONFIRM_SECONDS,
RemoteTools, RestartInfo, Senders,
};
pub use error::{ErrorCode, ToolErrorKind};
pub use frame::{Frame, FrameDecoder, Overflow, Step, encode_frame, trim_line};
pub use server::ServerEvent;
pub const PROTOCOL_VERSION: u32 = 3;
pub const MAX_CHANNEL_NAME_BYTES: usize = 32;
pub const MAX_TURN_ATTACHMENTS: usize = 16;
pub const CHAT_ATTACH_TOOL: &str = "chat_attach";
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct QueueEntry {
pub queue_id: String,
pub revision: u64,
pub prompt: String,
pub submitter: String,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub attachments: Vec<Attachment>,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub struct PeerInfo {
pub name: String,
pub version: String,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub struct Usage {
#[serde(skip_serializing_if = "Option::is_none")]
pub input_tokens: Option<u64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub output_tokens: Option<u64>,
}
#[cfg(test)]
mod tests;