Skip to main content

brainos_grpcadapter/
errors.rs

1//! gRPC adapter error type and `SignalError` → `tonic::Status` mapping.
2
3use signal::SignalError;
4use tonic::Status;
5
6#[derive(Debug, thiserror::Error)]
7pub enum GrpcAdapterError {
8    #[error("Server error: {0}")]
9    Server(String),
10}
11
12/// Map a `SignalError` to a sanitized gRPC `Status` (Issue 44). Internal
13/// detail (storage paths, SQL strings) stays in tracing logs only.
14pub(crate) fn public_status(err: &SignalError) -> Status {
15    let public = err.to_public();
16    let code = match err {
17        SignalError::Init(_) => tonic::Code::Unavailable,
18        SignalError::Storage(_) => tonic::Code::Unavailable,
19        SignalError::Llm(_) | SignalError::Processing(_) => tonic::Code::Internal,
20    };
21    Status::new(code, public.message)
22}