Skip to main content

inferlab_protocol/
lib.rs

1mod wire;
2
3use schemars::generate::SchemaSettings;
4
5pub use wire::{
6    AdapterError, AdapterErrorCode, AdapterProtocol, AdapterRequest, AdapterResponse,
7    AdapterResult, AllocationLaunch, BenchCaseInput, BenchClientRequest, BenchClientResult,
8    BenchDatasetCacheState, BenchDatasetCatalogInput, BenchDatasetInput,
9    BenchDatasetPreparationRequest, BenchDatasetPreparationResult, BenchDefinitionInput,
10    BenchLoadInput, BenchPopulationInput, BenchPrefixSharingInput, BenchRandomShapeInput,
11    BenchRequestSloInput, BenchRequestSloResult, BenchRequestSourceInput, BenchTokenCountSummary,
12    CaptureTargetRequirement, CaptureWindowControlEndpoint, CaptureWindowControlRequirement,
13    ClientEndpointInput, ClientStatus, EndpointAssignment, EndpointProtocol, EndpointRequirement,
14    EvalClientRequest, EvalClientResult, EvalDefinitionInput, EvalFailureKind,
15    EvalMetricComparison, EvalMetricGate, EvalMetricGateConclusion, EvalNormalizedMetric,
16    EvalTaskSourceInput, EvalTrialSummary, FrontendCoRendering, FrontendComponents,
17    FrontendGatewayComponent, FrontendHandoff, FrontendPdRouterComponent, FrontendProcessRole,
18    GatewayFrontendBinding, GatewayPdRouterFrontendBinding, GatewayPlan, GatewayTarget,
19    HttpActionSpec, HttpMethod, HttpTargetRegistryReadiness, IntegrationIdentity,
20    KvTransferMechanism, LaunchFileDeclaration, MeasurementModelInput, MeasurementProtocol,
21    Parallelism, ParallelismAttention, ParallelismExperts, ParallelismOuter, PdRouterPlan,
22    PdRoutingPolicies, PlanServeInput, PlanServeResult, ProcessSpec, ProtocolVersion, RawArtifact,
23    ReadinessProbe, RenderInputDeclaration, RenderServeInput, RenderServeResult, RenderSource,
24    RenderedServeProcess, ServeModelInput, ServeProcessAllocation, ServeReplicaRequirement,
25    ServeRoleInput, ServeRoleKind, ServeRoleLink, ServeRoleResult, ServeTopology, SettingValue,
26    SuppliedRenderInput, TargetEndpointScheme,
27};
28
29pub const PROTOCOL_SCHEMA_ID: &str = "https://inferlab.dev/schema/adapter-protocol/v7";
30pub const MEASUREMENT_SCHEMA_ID: &str = "https://inferlab.dev/schema/measurement-protocol/v1";
31pub const PROTOCOL_WIRE_SOURCE: &str = "crates/inferlab-protocol/src/wire.rs";
32
33#[must_use]
34pub fn protocol_schema() -> schemars::Schema {
35    schema_for::<AdapterProtocol>(PROTOCOL_SCHEMA_ID)
36}
37
38#[must_use]
39pub fn measurement_schema() -> schemars::Schema {
40    schema_for::<MeasurementProtocol>(MEASUREMENT_SCHEMA_ID)
41}
42
43fn schema_for<T: schemars::JsonSchema>(id: &str) -> schemars::Schema {
44    let mut schema = SchemaSettings::draft2020_12()
45        .for_deserialize()
46        .into_generator()
47        .into_root_schema_for::<T>();
48    schema.ensure_object().insert("$id".to_owned(), id.into());
49    schema.ensure_object().insert(
50        "$comment".to_owned(),
51        format!("Generated from {PROTOCOL_WIRE_SOURCE}; do not edit.").into(),
52    );
53    schema
54}