// use prost_build as _; // Not directly used fn main() -> Result<(), Box> { // Configure tonic-prost-build for proto compilation (Tonic 0.14+) // Note: Server code enabled for E2E tests (mock gRPC servers) tonic_prost_build::configure() .build_server(true) // Required for E2E test mock servers .build_client(true) // Force correct protobuf attributes for all messages .type_attribute(".", "#[derive(serde::Serialize, serde::Deserialize)]") // Suppress warnings in generated code .server_mod_attribute(".", "#[allow(unused_qualifications)]") .client_mod_attribute(".", "#[allow(unused_qualifications)]") // Enable proper protobuf derives .protoc_arg("--experimental_allow_proto3_optional") .compile_protos( &[ "proto/trading.proto", "proto/health.proto", "proto/ml.proto", "proto/config.proto", "proto/ml_training.proto", "proto/trading_agent.proto", ], &["proto"], )?; // Tell cargo to recompile if proto files change println!("cargo:rerun-if-changed=proto/trading.proto"); println!("cargo:rerun-if-changed=proto/health.proto"); println!("cargo:rerun-if-changed=proto/ml.proto"); println!("cargo:rerun-if-changed=proto/config.proto"); println!("cargo:rerun-if-changed=proto/ml_training.proto"); println!("cargo:rerun-if-changed=proto/trading_agent.proto"); Ok(()) }