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, BenchDatasetFilterInput,
9    BenchDefinitionInput, BenchInclusiveUniformInput, BenchLoadInput, BenchNativeInvocation,
10    BenchPopulationInput, BenchPopulationPreparationRequest, BenchPopulationPreparationResult,
11    BenchPrefixSharingInput, BenchPromptTemplateProjection, BenchPromptTemplateSource,
12    BenchPromptTokenTargetingSummary, BenchRandomShapeInput, BenchRequestSloInput,
13    BenchRequestSloResult, BenchRequestSourceInput, BenchRuntimeSessionResult,
14    BenchSessionDatasetCatalogInput, BenchSessionPhaseSummary, BenchSessionResultEvidence,
15    BenchSessionSourceInput, BenchSessionTemplateInput, BenchSessionTurnResult,
16    BenchTokenCountSummary, BenchTokenDistributionKindInput, BenchTokenSelectorInput,
17    CaptureTargetRequirement, CaptureWindowControlEndpoint, CaptureWindowControlRequirement,
18    CaptureWindowHttpActionSpec, ClientEndpointInput, ClientStatus, EndpointAssignment,
19    EndpointProtocol, EndpointRequirement, EvalClientRequest, EvalClientResult,
20    EvalDefinitionInput, EvalFailureKind, EvalMetricComparison, EvalMetricGate,
21    EvalMetricGateConclusion, EvalNormalizedMetric, EvalTaskSourceInput, EvalTrialSummary,
22    FrontendCoRendering, FrontendComponents, FrontendGatewayComponent, FrontendHandoff,
23    FrontendPdRouterComponent, FrontendProcessRole, GatewayFrontendBinding,
24    GatewayPdRouterFrontendBinding, GatewayPlan, GatewayTarget, HttpActionSpec, HttpMethod,
25    HttpTargetRegistryReadiness, IntegrationIdentity, KvTransferMechanism, LaunchFileDeclaration,
26    MeasurementModelInput, MeasurementProtocol, Parallelism, ParallelismAttention,
27    ParallelismExperts, ParallelismOuter, PdRouterPlan, PdRoutingPolicies, PlanServeInput,
28    PlanServeResult, ProcessSpec, ProtocolVersion, RawArtifact, ReadinessProbe,
29    RenderInputDeclaration, RenderServeInput, RenderServeResult, RenderSource,
30    RenderedServeProcess, ServeModelInput, ServeProcessAllocation, ServeReplicaRequirement,
31    ServeRoleInput, ServeRoleKind, ServeRoleLink, ServeRoleResult, ServeTopology,
32    ServerMetricsEndpointInput, ServerMetricsEndpointRequirement, SettingValue,
33    SuppliedRenderInput, TargetEndpointScheme,
34};
35
36pub const PROTOCOL_SCHEMA_ID: &str = "https://inferlab.dev/schema/adapter-protocol/v7";
37pub const MEASUREMENT_SCHEMA_ID: &str = "https://inferlab.dev/schema/measurement-protocol/v1";
38pub const PROTOCOL_WIRE_SOURCE: &str = "crates/inferlab-protocol/src/wire.rs";
39
40#[must_use]
41pub fn protocol_schema() -> schemars::Schema {
42    schema_for::<AdapterProtocol>(PROTOCOL_SCHEMA_ID)
43}
44
45#[must_use]
46pub fn measurement_schema() -> schemars::Schema {
47    schema_for::<MeasurementProtocol>(MEASUREMENT_SCHEMA_ID)
48}
49
50fn schema_for<T: schemars::JsonSchema>(id: &str) -> schemars::Schema {
51    let mut schema = SchemaSettings::draft2020_12()
52        .for_deserialize()
53        .into_generator()
54        .into_root_schema_for::<T>();
55    schema.ensure_object().insert("$id".to_owned(), id.into());
56    schema.ensure_object().insert(
57        "$comment".to_owned(),
58        format!("Generated from {PROTOCOL_WIRE_SOURCE}; do not edit.").into(),
59    );
60    schema
61}