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, BenchRequestSloInput, BenchRequestSloResult,
11    BenchRequestSourceInput, BenchTokenCountSummary, CaptureTargetRequirement,
12    CaptureWindowControlEndpoint, CaptureWindowControlRequirement, ClientEndpointInput,
13    ClientStatus, EndpointAssignment, EndpointProtocol, EndpointRequirement, EvalClientRequest,
14    EvalClientResult, EvalDefinitionInput, EvalFailureKind, EvalMetricComparison, EvalMetricGate,
15    EvalMetricGateConclusion, EvalNormalizedMetric, EvalTaskSourceInput, EvalTrialSummary,
16    FrontendCoRendering, FrontendComponents, FrontendGatewayComponent, FrontendHandoff,
17    FrontendPdRouterComponent, FrontendProcessRole, GatewayFrontendBinding,
18    GatewayPdRouterFrontendBinding, GatewayPlan, GatewayTarget, HttpActionSpec, HttpMethod,
19    HttpTargetRegistryReadiness, IntegrationIdentity, KvTransferMechanism, LaunchFileDeclaration,
20    MeasurementModelInput, Parallelism, ParallelismAttention, ParallelismExperts, ParallelismOuter,
21    PdRouterPlan, PdRoutingPolicies, PlanServeInput, PlanServeResult, ProcessSpec, ProtocolVersion,
22    RawArtifact, ReadinessProbe, RenderInputDeclaration, RenderServeInput, RenderServeResult,
23    RenderSource, RenderedServeProcess, ServeModelInput, ServeProcessAllocation,
24    ServeReplicaRequirement, ServeRoleInput, ServeRoleKind, ServeRoleLink, ServeRoleResult,
25    ServeTopology, SettingValue, SuppliedRenderInput, TargetEndpointScheme,
26};
27
28pub const PROTOCOL_SCHEMA_ID: &str = "https://inferlab.dev/schema/adapter-protocol/v7";
29pub const PROTOCOL_WIRE_SOURCE: &str = "crates/inferlab-protocol/src/wire.rs";
30
31#[must_use]
32pub fn protocol_schema() -> schemars::Schema {
33    let mut schema = SchemaSettings::draft2020_12()
34        .for_deserialize()
35        .into_generator()
36        .into_root_schema_for::<AdapterProtocol>();
37    schema
38        .ensure_object()
39        .insert("$id".to_owned(), PROTOCOL_SCHEMA_ID.into());
40    schema.ensure_object().insert(
41        "$comment".to_owned(),
42        format!("Generated from {PROTOCOL_WIRE_SOURCE}; do not edit.").into(),
43    );
44    schema
45}