1#![forbid(unsafe_code)]
11#![warn(missing_docs)]
12
13mod attachment;
14mod background;
15mod client;
16mod daemon;
17mod error;
18mod frame;
19mod review;
20mod server;
21
22use serde::{Deserialize, Serialize};
23
24pub use attachment::{Attachment, ReplyAttachment, reply_attachment};
25pub use background::{
26 JobChange, JobReport, JobStatus, OriginKind, TurnOrigin, describe_reports, job_agent,
27};
28pub use client::{ChatLog, ClientMessage};
29pub use daemon::{
30 ComponentHealth, ComponentState, ConfirmInfo, ConfirmState, DEFAULT_CONFIRM_SECONDS,
31 DaemonCommand, DaemonStatus, DelegationInfo, DelegationSummary, MAX_CONFIRM_SECONDS,
32 MailAction, MailCounts, ProjectEvent, ProjectPhase, ProjectReport, ProjectResponse, ProjectRun,
33 ProjectRunStatus, ProjectStatus, ProjectSummary, ProjectTask, ProjectTaskStatus, Purpose,
34 RemoteTools, RestartInfo, Senders,
35};
36pub use error::{ErrorCode, ToolErrorKind};
37pub use frame::{Frame, FrameDecoder, Overflow, Step, encode_frame, trim_line};
38pub use review::{
39 JobOutcome, LandMode, LandingEvidence, LandingStatus, LandingSummary, OpenFinding, Refusal,
40 ReviewOutcome, ReviewSummary, ReviewerResult, TriedReviewer, describe_outcome, outcome_notice,
41};
42pub use server::ServerEvent;
43
44pub const PROTOCOL_VERSION: u32 = 3;
46
47pub const MAX_CHANNEL_NAME_BYTES: usize = 32;
49pub const MAX_SYSTEM_PROMPT_BYTES: usize = 16 * 1024;
51pub const MAX_TURN_ATTACHMENTS: usize = 16;
53pub const CHAT_ATTACH_TOOL: &str = "chat_attach";
55
56#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
58pub struct QueueEntry {
59 pub queue_id: String,
61 pub revision: u64,
63 pub prompt: String,
65 pub submitter: String,
67 #[serde(default, skip_serializing_if = "Vec::is_empty")]
69 pub attachments: Vec<Attachment>,
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
74pub struct PeerInfo {
75 pub name: String,
77 pub version: String,
79}
80
81#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
83pub struct Usage {
84 #[serde(skip_serializing_if = "Option::is_none")]
86 pub input_tokens: Option<u64>,
87 #[serde(skip_serializing_if = "Option::is_none")]
89 pub output_tokens: Option<u64>,
90}
91
92#[cfg(test)]
93mod tests;