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;
21mod workbench;
22
23use serde::{Deserialize, Serialize};
24
25pub use attachment::{Attachment, ReplyAttachment, reply_attachment};
26pub use background::{
27 JobChange, JobReport, JobStatus, OriginKind, TurnOrigin, describe_reports, job_agent,
28};
29pub use client::{ChatLog, ClientMessage};
30pub use daemon::{
31 ComponentHealth, ComponentState, ConfirmInfo, ConfirmState, DEFAULT_CONFIRM_SECONDS,
32 DaemonCommand, DaemonStatus, DelegationInfo, DelegationSummary, MAX_CONFIRM_SECONDS,
33 MailAction, MailCounts, ProjectEvent, ProjectPhase, ProjectReport, ProjectResponse, ProjectRun,
34 ProjectRunStatus, ProjectStatus, ProjectSummary, ProjectTask, ProjectTaskStatus, Purpose,
35 RemoteTools, RestartInfo, Senders,
36};
37pub use error::{ErrorCode, ToolErrorKind};
38pub use frame::{Frame, FrameDecoder, Overflow, Step, encode_frame, trim_line};
39pub use review::{
40 JobOutcome, LandMode, LandingEvidence, LandingStatus, LandingSummary, OpenFinding, Refusal,
41 ReviewOutcome, ReviewSummary, ReviewerResult, TriedReviewer, describe_outcome, outcome_notice,
42};
43pub use server::ServerEvent;
44pub use workbench::{
45 AgentState, JobOrigin, RestorableSession, RestoredQueue, RunEvent, RunEventKind, RunLogPage,
46 SendMode, WorkbenchApproval, WorkbenchJob, WorkbenchRun, WorkbenchSession, WorkbenchSnapshot,
47 WorktreeInfo, WorktreeRef,
48};
49
50pub const PROTOCOL_VERSION: u32 = 3;
52
53pub const MAX_CHANNEL_NAME_BYTES: usize = 32;
55pub const MAX_SYSTEM_PROMPT_BYTES: usize = 16 * 1024;
57pub const MAX_TURN_ATTACHMENTS: usize = 16;
59pub const CHAT_ATTACH_TOOL: &str = "chat_attach";
61
62#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
64pub struct QueueEntry {
65 pub queue_id: String,
67 pub revision: u64,
69 pub prompt: String,
71 pub submitter: String,
73 #[serde(default, skip_serializing_if = "Vec::is_empty")]
75 pub attachments: Vec<Attachment>,
76}
77
78#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
80pub struct PeerInfo {
81 pub name: String,
83 pub version: String,
85}
86
87#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
89pub struct Usage {
90 #[serde(skip_serializing_if = "Option::is_none")]
92 pub input_tokens: Option<u64>,
93 #[serde(skip_serializing_if = "Option::is_none")]
95 pub output_tokens: Option<u64>,
96}
97
98#[cfg(test)]
99mod tests;