diff --git a/libs/api/agent/issue_triage.rs b/libs/api/agent/issue_triage.rs index 697ee15..775d94c 100644 --- a/libs/api/agent/issue_triage.rs +++ b/libs/api/agent/issue_triage.rs @@ -35,10 +35,10 @@ pub async fn triage_issue( ))?; let project = service.utils_find_project_by_name(project_name.clone()).await?; // Verify user has access to the project before triggering AI triage - let _member = service - .get_project_member(project.id, user_id) + service + .check_project_access(project.id, user_id) .await - .map_err(|_| crate::error::ApiError(service::error::AppError::Forbidden))?; + .map_err(|e| crate::error::ApiError(e))?; let resp = service .triage_issue(project_name, query.issue_number) .await?; diff --git a/libs/email/lib.rs b/libs/email/lib.rs index 57f91d5..6e0c879 100644 --- a/libs/email/lib.rs +++ b/libs/email/lib.rs @@ -16,7 +16,7 @@ pub struct EmailMessage { pub body: String, } -static EMAIL_REGEX: LazyLock = +pub static EMAIL_REGEX: LazyLock = LazyLock::new(|| Regex::new(r"^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$").unwrap()); #[derive(Clone)] diff --git a/libs/observability/src/tracing_fmt.rs b/libs/observability/src/tracing_fmt.rs index 78a1edc..61e03bf 100644 --- a/libs/observability/src/tracing_fmt.rs +++ b/libs/observability/src/tracing_fmt.rs @@ -9,13 +9,13 @@ use crate::msg_json_fmt::MsgJsonFormat; use once_cell::sync::Lazy; use std::io::IsTerminal; use std::str::FromStr; +use tracing_subscriber::Layer; use tracing_subscriber::{ fmt::{self, format::FmtSpan}, layer::SubscriberExt, util::SubscriberInitExt, EnvFilter, }; -use tracing_subscriber::Layer; /// Global instance identifier, resolved once at startup. /// Priority: `INSTANCE_ID` env var → system hostname → `"unknown"`. @@ -56,12 +56,11 @@ fn use_json() -> bool { /// Pass `defer = true` when OTLP will be initialized afterwards via `init_otlp()`. pub fn init_tracing_subscriber(level: &str, defer: bool) { let env_filter = EnvFilter::try_from_default_env() - .or_else(|_| EnvFilter::from_str(level).ok()) - .unwrap_or_else(|| EnvFilter::from_str("info").expect("default log level")); + .or_else(|_| EnvFilter::from_str(level)) + .unwrap_or_else(|_| EnvFilter::from_str("info").expect("default log level")); let fmt_layer: Box + Send + Sync> = if use_json() { - let mut layer = fmt::layer() - .event_format(MsgJsonFormat); + let mut layer = fmt::layer().event_format(MsgJsonFormat); layer.set_span_events(FmtSpan::CLOSE); <_ as Layer<_>>::boxed(layer) } else {