unified-agent-api-wrapper-events 0.3.4

Shared ingestion primitives for unified-agent-api wrapper JSONL and NDJSON outputs
Documentation
use serde_json::Value;
use thiserror::Error;

#[derive(Debug, Clone, Copy, Eq, PartialEq)]
pub enum AdapterErrorCode {
    JsonParse,
    Normalize,
    TypedParse,
    Unknown,
}

#[derive(Debug, Clone, PartialEq)]
pub struct CapturedRaw {
    pub line: Option<String>,
    pub json: Option<Value>,
}

#[derive(Debug, Error, Clone)]
pub enum LineRecordError {
    #[error("I/O error while reading wrapper output")]
    Io,
    #[error("invalid UTF-8 in wrapper output")]
    InvalidUtf8,
    #[error("line too long (observed_bytes={observed_bytes}, max_line_bytes={max_line_bytes})")]
    LineTooLong {
        observed_bytes: usize,
        max_line_bytes: usize,
    },
    #[error("adapter parse failure ({code:?}): {summary}")]
    Adapter {
        code: AdapterErrorCode,
        summary: String,
    },
}

#[derive(Debug, Clone)]
pub struct LineRecord<T> {
    pub line_number: usize,
    pub captured_raw: Option<CapturedRaw>,
    pub outcome: Result<T, LineRecordError>,
}

#[derive(Debug, Clone)]
pub struct ErrorDetail {
    pub line_number: usize,
    pub code: AdapterErrorCode,
    pub adapter: &'static str,
    pub details: String,
}

pub trait ErrorDetailSink: Send + 'static {
    fn on_error(&mut self, detail: ErrorDetail);
}