Skip to main content

inferlab_protocol/
lib.rs

1mod measurement_data_asset;
2mod wire;
3
4use schemars::generate::SchemaSettings;
5
6pub use measurement_data_asset::{
7    EvalPreparedSourceBinding, MeasurementDataAssetAcquiredSource,
8    MeasurementDataAssetCacheOutcome, MeasurementDataAssetCacheStore,
9    MeasurementDataAssetContentEntry, MeasurementDataAssetEffectiveSelection,
10    MeasurementDataAssetPreparationNextPhase, MeasurementDataAssetPreparationPhase,
11    MeasurementDataAssetPreparationRequest, MeasurementDataAssetPreparationResult,
12    MeasurementDataAssetReadiness, MeasurementDataAssetRemoteMetadataOutcome,
13    MeasurementDataAssetSourceBytesOutcome, MeasurementDataAssetSourceInput,
14    MeasurementDataAssetVerification, MeasurementDataFiles,
15};
16pub use wire::{
17    AdapterError, AdapterErrorCode, AdapterProtocol, AdapterRequest, AdapterResponse,
18    AdapterResult, AllocationLaunch, AuxiliaryModelInput, AuxiliaryModelKind,
19    AuxiliaryModelLocator, BenchAgenticAcquisitionOutcome, BenchAgenticBranchStats,
20    BenchAgenticCatalogInput, BenchAgenticResultEvidence, BenchAgenticRunEvidence,
21    BenchAgenticSourceInput, BenchAgenticSourceVerification, BenchArtifactLevelInput,
22    BenchCacheStartInput, BenchCaseInput, BenchClientRequest, BenchClientResult, BenchCorpusInput,
23    BenchDatasetCacheState, BenchDatasetCatalogInput, BenchDatasetFilterInput,
24    BenchDefinitionInput, BenchInclusiveUniformInput, BenchLoadInput, BenchNativeInvocation,
25    BenchPopulationInput, BenchPopulationPreparationRequest, BenchPopulationPreparationResult,
26    BenchPrefixConditioningInput, BenchPrefixGeometrySummary, BenchPrefixSharingInput,
27    BenchPromptCacheObservation, BenchPromptInput, BenchPromptRouteInput,
28    BenchPromptTemplateProjection, BenchPromptTemplateSource, BenchPromptTokenReconciliation,
29    BenchPromptTokenTargetingSummary, BenchRandomShapeInput, BenchRenderingAuthorityInput,
30    BenchRequestRepresentationInput, BenchRequestSloInput, BenchRequestSloResult,
31    BenchRequestSourceInput, BenchRuntimeSessionResult, BenchSessionDatasetCatalogInput,
32    BenchSessionPhaseSummary, BenchSessionResultEvidence, BenchSessionSourceInput,
33    BenchSessionTemplateInput, BenchSessionTurnResult, BenchSharedSystemContentInput,
34    BenchSharedSystemContentSummary, BenchTokenCountSummary, BenchTokenDistributionKindInput,
35    BenchTokenSelectorInput, CaptureMechanism, CaptureTargetRequirement,
36    CaptureWindowControlEndpoint, CaptureWindowControlRequirement, CaptureWindowHttpActionSpec,
37    ClientEndpointInput, ClientStatus, EndpointAssignment, EndpointDeclaration, EndpointProtocol,
38    EndpointRequirement, EvalClientRequest, EvalClientResult, EvalDefinitionInput, EvalFailureKind,
39    EvalMetricComparison, EvalMetricGate, EvalMetricGateConclusion, EvalNormalizedMetric,
40    EvalPromptInput, EvalTaskSourceInput, EvalTrialSummary, FrontendCoRendering,
41    FrontendComponents, FrontendGatewayComponent, FrontendHandoff, FrontendPdRouterComponent,
42    FrontendProcessRole, GatewayFrontendBinding, GatewayPdRouterFrontendBinding, GatewayPlan,
43    GatewayTarget, HttpActionSpec, HttpMethod, HttpTargetRegistryReadiness, IntegrationIdentity,
44    KvTransferMechanism, LaunchFileDeclaration, MeasurementModelInput, MeasurementProtocol,
45    Parallelism, ParallelismAttention, ParallelismExperts, ParallelismOuter, PdRouterPlan,
46    PdRoutingPolicies, PlanServeInput, PlanServeResult, ProcessSpec,
47    PromptCacheReadZeroRepresentation, ProtocolVersion, RawArtifact, ReadinessProbe,
48    RenderInputDeclaration, RenderServeInput, RenderServeResult, RenderSource,
49    RenderedServeProcess, ServeModelInput, ServeProcessAllocation, ServeReplicaRequirement,
50    ServeRoleInput, ServeRoleKind, ServeRoleLink, ServeRoleResult, ServeTopology,
51    ServerMetricsEndpointInput, ServerMetricsEndpointRequirement, SettingValue,
52    SuppliedRenderInput, SyntheticAcceptanceCurveInput, SyntheticAcceptanceInput,
53    SyntheticAcceptanceOutcome, TargetEndpointScheme,
54};
55
56pub const PROTOCOL_SCHEMA_ID: &str = "https://inferlab.dev/schema/adapter-protocol/v10";
57pub const MEASUREMENT_SCHEMA_ID: &str = "https://inferlab.dev/schema/measurement-protocol/v1";
58pub const PROTOCOL_WIRE_SOURCE: &str = "crates/inferlab-protocol/src/wire.rs";
59pub const MEASUREMENT_WIRE_SOURCE: &str =
60    "crates/inferlab-protocol/src/wire.rs and measurement_data_asset.rs";
61
62#[must_use]
63pub fn protocol_schema() -> schemars::Schema {
64    schema_for::<AdapterProtocol>(PROTOCOL_SCHEMA_ID, PROTOCOL_WIRE_SOURCE)
65}
66
67#[must_use]
68pub fn measurement_schema() -> schemars::Schema {
69    schema_for::<MeasurementProtocol>(MEASUREMENT_SCHEMA_ID, MEASUREMENT_WIRE_SOURCE)
70}
71
72fn schema_for<T: schemars::JsonSchema>(id: &str, wire_source: &str) -> schemars::Schema {
73    let mut schema = SchemaSettings::draft2020_12()
74        .for_deserialize()
75        .into_generator()
76        .into_root_schema_for::<T>();
77    schema.ensure_object().insert("$id".to_owned(), id.into());
78    schema.ensure_object().insert(
79        "$comment".to_owned(),
80        format!("Generated from {wire_source}; do not edit.").into(),
81    );
82    schema
83}