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}