mod measurement_data_asset;
mod wire;
use schemars::generate::SchemaSettings;
pub use measurement_data_asset::{
EvalPreparedSourceBinding, MeasurementDataAssetAcquiredSource,
MeasurementDataAssetCacheOutcome, MeasurementDataAssetCacheStore,
MeasurementDataAssetContentEntry, MeasurementDataAssetEffectiveSelection,
MeasurementDataAssetPreparationNextPhase, MeasurementDataAssetPreparationPhase,
MeasurementDataAssetPreparationRequest, MeasurementDataAssetPreparationResult,
MeasurementDataAssetReadiness, MeasurementDataAssetRemoteMetadataOutcome,
MeasurementDataAssetSourceBytesOutcome, MeasurementDataAssetSourceInput,
MeasurementDataAssetVerification, MeasurementDataFiles,
};
pub use wire::{
AdapterError, AdapterErrorCode, AdapterProtocol, AdapterRequest, AdapterResponse,
AdapterResult, AllocationLaunch, AuxiliaryModelInput, AuxiliaryModelKind,
AuxiliaryModelLocator, BenchAgenticAcquisitionOutcome, BenchAgenticBranchStats,
BenchAgenticCatalogInput, BenchAgenticResultEvidence, BenchAgenticRunEvidence,
BenchAgenticSourceInput, BenchAgenticSourceVerification, BenchArtifactLevelInput,
BenchCacheStartInput, BenchCaseInput, BenchClientRequest, BenchClientResult, BenchCorpusInput,
BenchDatasetCacheState, BenchDatasetCatalogInput, BenchDatasetFilterInput,
BenchDefinitionInput, BenchImageSamplingInput, BenchImageSourceInput, BenchImagesInput,
BenchInclusiveUniformInput, BenchLoadInput, BenchNativeInvocation, BenchPopulationInput,
BenchPopulationPreparationRequest, BenchPopulationPreparationResult,
BenchPrefixConditioningInput, BenchPrefixGeometrySummary, BenchPrefixSharingInput,
BenchPromptCacheObservation, BenchPromptInput, BenchPromptRouteInput,
BenchPromptTemplateProjection, BenchPromptTemplateSource, BenchPromptTokenReconciliation,
BenchPromptTokenTargetingSummary, BenchRandomShapeInput, BenchRenderingAuthorityInput,
BenchRequestRepresentationInput, BenchRequestSloInput, BenchRequestSloResult,
BenchRequestSourceInput, BenchRuntimeSessionResult, BenchSessionDatasetCatalogInput,
BenchSessionPhaseSummary, BenchSessionResultEvidence, BenchSessionSourceInput,
BenchSessionTemplateInput, BenchSessionTurnResult, BenchSharedSystemContentInput,
BenchSharedSystemContentSummary, BenchTokenCountSummary, BenchTokenDistributionKindInput,
BenchTokenSelectorInput, CaptureMechanism, CaptureTargetRequirement,
CaptureWindowControlEndpoint, CaptureWindowControlRequirement, CaptureWindowHttpActionSpec,
ClientEndpointInput, ClientStatus, EndpointAssignment, EndpointDeclaration, EndpointProtocol,
EndpointRequirement, EvalClientRequest, EvalClientResult, EvalDefinitionInput, EvalFailureKind,
EvalMetricComparison, EvalMetricGate, EvalMetricGateConclusion, EvalNormalizedMetric,
EvalPromptInput, EvalTaskSourceInput, EvalTrialSummary, FrontendCoRendering,
FrontendComponents, FrontendGatewayComponent, FrontendHandoff, FrontendPdRouterComponent,
FrontendProcessRole, GatewayFrontendBinding, GatewayPdRouterFrontendBinding, GatewayPlan,
GatewayTarget, HttpActionSpec, HttpMethod, HttpTargetRegistryReadiness, IntegrationIdentity,
KvTransferMechanism, LaunchFileDeclaration, MeasurementModelInput, MeasurementProtocol,
Parallelism, ParallelismAttention, ParallelismExperts, ParallelismOuter, PdRouterPlan,
PdRoutingPolicies, PlanServeInput, PlanServeResult, ProcessSpec,
PromptCacheReadZeroRepresentation, ProtocolVersion, RawArtifact, ReadinessProbe,
RenderInputDeclaration, RenderServeInput, RenderServeResult, RenderSource,
RenderedServeProcess, ServeModelInput, ServeProcessAllocation, ServeReplicaRequirement,
ServeRoleInput, ServeRoleKind, ServeRoleLink, ServeRoleResult, ServeTopology,
ServerMetricsEndpointInput, ServerMetricsEndpointRequirement, SettingValue,
SuppliedRenderInput, SyntheticAcceptanceCurveInput, SyntheticAcceptanceInput,
SyntheticAcceptanceOutcome, TargetEndpointScheme,
};
pub const PROTOCOL_SCHEMA_ID: &str = "https://inferlab.dev/schema/adapter-protocol/v11";
pub const MEASUREMENT_SCHEMA_ID: &str = "https://inferlab.dev/schema/measurement-protocol/v1";
pub const PROTOCOL_WIRE_SOURCE: &str = "crates/inferlab-protocol/src/wire.rs";
pub const MEASUREMENT_WIRE_SOURCE: &str =
"crates/inferlab-protocol/src/wire.rs and measurement_data_asset.rs";
#[must_use]
pub fn protocol_schema() -> schemars::Schema {
schema_for::<AdapterProtocol>(PROTOCOL_SCHEMA_ID, PROTOCOL_WIRE_SOURCE)
}
#[must_use]
pub fn measurement_schema() -> schemars::Schema {
schema_for::<MeasurementProtocol>(MEASUREMENT_SCHEMA_ID, MEASUREMENT_WIRE_SOURCE)
}
fn schema_for<T: schemars::JsonSchema>(id: &str, wire_source: &str) -> schemars::Schema {
let mut schema = SchemaSettings::draft2020_12()
.for_deserialize()
.into_generator()
.into_root_schema_for::<T>();
schema.ensure_object().insert("$id".to_owned(), id.into());
schema.ensure_object().insert(
"$comment".to_owned(),
format!("Generated from {wire_source}; do not edit.").into(),
);
schema
}