inferlab-protocol 0.15.4

Wire types for the Inferlab framework-integration protocol: strict, versioned one-shot JSON adapter operations.
Documentation
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
}